из sql, php, генерирующий msWord, нужно показывать возврат каретки?

Мой PHP генерирует документ Word, но не отображает возврат каретки. Мой CKEditor переводит возврат каретки в любой,

<br>, or <div>asdf</div>

Когда документ Word будет создан, он отобразит эти теги HTML, поэтому я их удаляю. Какой код замены, символ, ascii или тег можно использовать, чтобы при отображении страницы текст отображался так же, как в редакторе?

Текущий пример — если у вас есть текст «Не спрыгивайте с» [затем нажмите Enter, чтобы следующее слово было под ним]...

"утес." Вместо этого в настоящее время это сохраняется в SQL как:

Don't jump off the <br>cliff.
Don't jump off the <div>cliff</div>.

...в зависимости от используемого браузера. В выводе msWord любые теги, оставленные в содержимом [исключения для функции strip_tags], отображаются буквально в msWord. Или, если я заменю теги на ASCII, он тоже отобразит это буквально. Не уверен, поможет ли это, но это определено в верхней части моего файла php report_generator.php:

require_once '/var/www/PhpWord/src/PhpWord/Autoloader.php';
\PhpOffice\PhpWord\Autoloader::register();
include "/var/www/ncpcphp/NCPC_PHP_Functions.php";
DEFINE("WRITEtoFDOCS", "NO");
DEFINE("FDOCSDIRECTORY", "Contract Attachments");
DEFINE("MIMETYPE","application/vnd.openxmlformats-officedocument.wordprocessingml.document" );

Помогите - что я могу использовать, чтобы вывод отображал возврат каретки?


person dcparham    schedule 09.03.2018    source источник
comment
Как вы добавляете html в свой документ Word?   -  person troosan    schedule 10.03.2018
comment
Я не знаю php, но Word использует символ ANSI 13 для нового абзаца. В языках VB я использую Chr(13) как часть строкового значения. В C# работает \n или \r. Если php похож на C#, то: Don't jump off the\ncliff   -  person Cindy Meister    schedule 10.03.2018
comment
Возможный дубликат PHP - как создать символ новой строки?   -  person Cindy Meister    schedule 11.03.2018
comment
Вы найдете информацию, которую я дал вам, подтвержденную в stackoverflow.com/questions/4238433/   -  person Cindy Meister    schedule 11.03.2018


Ответы (1)


Спасибо, Синди. Ваш ответ является частью решения. Мой CKEditor сохраняет возврат каретки как

<br>, <br />, or <div></div>

в зависимости от того, какой браузер используется Chrome [div] или Firefox [br] - это входит в мой msSQL. Тем не менее, если мой редактор включил «Фильтр ввода» [keycode-13], чтобы предотвратить ввод и редактирование [[Placeholder]] (плагин только для чтения ckeditor), тогда сохраненный текст редактора удаляет Enter. Итак, я сделал это: сохранил в фильтре ввода, потому что это необходимо, затем после того, как текстовые возвраты каретки сохраняются как br или div, когда я запускаю свой генератор отчетов, я заменяю

<br>, <br />, and <div></div> 

с "\n", как вы сказали. Затем я взрываю текстовую переменную следующим образом:

$show_cad = explode("\n", $show_cad);
    foreach($show_cad as $line) {
       $section->addText(htmlspecialchars($line));
    }

Код в редакторе, необходимый для фильтрации ввода только при нажатии Enter в плагине [[Placeholder]], более сложен, и я получил в основном от самого CKEditor. Они просят, чтобы я не публиковал их полные решения, но, если хотите, я могу показать вам их фрагменты. По сути, мне пришлось зарегистрировать виджет Placeholder. Затем, когда нажимается Enter, он проверяет, соответствует ли контекст Placeholder. Если это так, отфильтруйте Enter [тогда он исчезнет из сохраненного текста редактора], но если Enter будет нажат в другом месте, он сохранится и будет использоваться правильно.

Спасибо за помощь!

person dcparham    schedule 12.03.2018