как правильно отображать двойные кавычки с помощью PHPWord?

ну, я уже пару месяцев бился головой о стену, пытаясь исправить это. У меня есть устаревшая база данных MySQL, которую можно охарактеризовать как ад персонажей. После большой работы я смог исправить все неправильно отображаемые символы и сделал все в UTF-8 (таблицы, сопоставление, подключение к базе данных, заголовки и т. Д.).

Теперь проблема в том, что когда я пытаюсь создать документ Word с помощью PHPWord, двойные кавычки (") появляются как эквивалент его html-сущности ". Это единственное препятствие между мной и победой, поэтому, если есть какие-то идеи, я буду очень благодарен.

Вот код:

include_once "../PHPWord.php";
include_once "../debug.php";

$file_name = "filename.docx";
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file_name");
//header("Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document");
header("Content-Type: application/vnd.ms-word; charset=utf-8");
header("Content-Transfer-Encoding: binary");

$index = 1218;
$mysqli = new mysqli("host","user","pass","database");
$mysqli->set_charset("utf8");
$qry1 = "SELECT * FROM table WHERE index = $index ORDER BY field DESC";
$qry2 = "SELECT * FROM table2 WHERE index = $index";

$PHPWord = new PHPWord();
$section = $PHPWord->createSection();

$section->addText("Connection Encoding: ".$mysqli->character_set_name());
$section->addText("resuls");

$res1 = $mysqli->query($qry1);
while($row = $res1->fetch_assoc()){
    $section->addText($row[name]);
    $section->addText(mb_detect_encoding($row['name']));
}

$section->addText("results2");

$res2 = $mysqli->query($qry2);
while($row = $res2->fetch_assoc()){
    $section->addText(trim($row['title']));
    $section->addText(mb_detect_encoding($row['title']));
}

$objWriter = PHPWord_IOFactory::createWriter($PHPWord,'Word2007');
$objWriter->save('php://output');
exit;

Результат примерно такой:

book:"Book Title"

До сих пор я пробовал множество функций и решений, включая функции PHP, такие как html_entity_decode, escape-символы и измененные файлы PHPWord, чтобы они не пытались перекодировать текст при добавлении его в вывод.

Заранее спасибо.


person Jose Armando Lopez    schedule 17.07.2012    source источник


Ответы (2)


Я предполагаю, что вам нужно использовать msqli_real_escape_string ()

где-то в вашем запросе или еще, возможно, у этого есть решение для вас: phpWord обработка UTF-8

person Lawrence DeSouza    schedule 17.07.2012
comment
спасибо за ответ, я уже пробовал вторую ссылку, которую вы опубликовали, и получаю тот же результат. Первая ссылка, она пригодится при загрузке БД, но пока моя проблема в том, что когда я получаю информацию, php преобразует мои цитаты в сущности html даже с отключенными магическими кавычками. - person Jose Armando Lopez; 18.07.2012

Попробуйте последнюю версию PHPWord (0.8) с GitHub. В этой версии решена проблема UTF-8.

person ivanlanin    schedule 20.03.2014