从sql,php生成msWord需要显示回车符吗?

时间:2018-03-09 22:58:09

标签: ms-word carriage-return phpword

我的PHP生成一个Word文档,但它不会渲染回车。我的CKEditor将回车转换为其中之一,

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

创建Word文档时,它将显示这些HTML标记,因此我将其删除。我可以使用什么替换代码,字符,ascii或标记,以便在呈现页面时,它会像在编辑器中一样显示文本?

当前示例 - 如果您有文字&#34;请勿跳过&#34; [然后点击Enter,这样下一个单词就在它下面] ......

&#34;悬崖&#34。相反,目前,它被保存到SQL中:

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

...取决于使用的浏览器。在msWord输出中,内容中剩余的任何标签[strip_tags函数的例外]将在msWord中逐字显示。或者,如果我用ASCII&#13替换标签;它也从字面上显示出来。不确定这是否有帮助,但这是在我的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" );

帮助 - 我可以使用什么来使输出显示回车?

1 个答案:

答案 0 :(得分:0)

谢谢Cindy。你的答案是解决方案的一部分。我的CKEditor将回车保存为

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

取决于使用哪个浏览器Chrome [div]或Firefox [br] - 进入我的msSQL。然而,如果我的编辑器打开了“输入过滤器”[keycode-13]以防止某人输入[[Placeholder]](ckeditor read-onlyplugin),则保存的编辑器文本会删除Enter。所以,我这样做了:保留在输入过滤器中,因为它是必要的,然后在文本回车后保存为br或div,当我运行报告生成器时,我替换

<br>, <br />, and <div></div> 
像你说的那样“\ n”。然后我像这样爆炸文本变量:

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

只有在[[Placeholder]]插件中按下 Enter时,编辑器中的代码才需要过滤掉Enters ,这在很大程度上来自于CKEditor。他们要求我不发布他们的完整解决方案,但如果你愿意,我可以向你展示它的一部分。基本上,我必须注册Placeholder小部件。然后,当按Enter键时,它会检查上下文是否包含Placeholder。如果是这样,请过滤Enter [然后它会从保存的编辑器文本中消失],但如果在其他地方按下Enter,它将被保存并正确使用。

感谢您的帮助!