PHP word doc:捕获特殊字符

时间:2015-11-17 03:24:29

标签: php json phpword

我正在进行一项任务,我需要捕获在html上生成的内容并将其发送到word文档,以便可以进一步发送。 我已经捕获了内容并使用json对象将其发送到php并生成了word文档,但是当html具有特殊字符时,它会导致word文档被破坏。我尝试在htmlspecialchars函数中使用addText,但它没有帮助。

这是我的PHP代码

\PhpOffice\PhpWord\Autoloader::register();
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$jsonData2 =json_decode($_POST['outputData'],true);
foreach ($jsonData2 as $key => $value) {
        $section-> addTextBreak();
        $section->addText($key, array('size' => 16, 'bold' => true, 'color' => '#3b5999'));
        $section-> addTextBreak(2);
        foreach ($value as $key => $value) {
        $section->addText($value, array('size' => 11));
        $section-> addTextBreak();  
    }
}

有人可以如何捕获特殊字符并将其显示在单词doc中,这样就不会导致文件损坏

2 个答案:

答案 0 :(得分:0)

尝试将Content-Type标题放在文件的顶部:

header('Content-type: text/html; charset=utf-8');

类似的问题 How to set UTF-8 encoding for a PHP file

答案 1 :(得分:0)

编写某些格式的文档,尤其是基于XML的文档,需要正确的转义输出。没有它,当您在文档中加上“&”号,引号等特殊字符时,文档可能会损坏。

转义可以通过两种方式执行:软件开发人员在库外部和内置机制在库内部。

默认情况下,为了与v0.13.0之前的版本向后兼容,默认情况下禁用了内置机制。要打开它,请在您的PHPWord配置文件中将outputEscapingEnabled选项设置为true

在运行时使用以下指令:

\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);
相关问题