【问题标题】:PHP word doc: capturing special charactersPHP word doc:捕获特殊字符
【发布时间】:2016-02-18 07:59:04
【问题描述】:

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

这是我的 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();  
    }
}

有人可以如何捕获特殊字符并将其显示到 word doc 中,以免导致文件损坏

【问题讨论】:

    标签: php json phpword


    【解决方案1】:

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

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

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

    【讨论】:

    • 这不起作用.. 通过 json 对象发送的内容格式正确,但 php word 无法正确显示
    【解决方案2】:

    编写某些格式的文档,尤其是基于 XML 的文档,需要正确的输出转义。如果没有它,当您在其中放入特殊字符(如与号、引号和其他字符)时,您的文档可能会损坏。

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

    默认情况下,禁用内置机制以向后兼容 v0.13.0 之前的版本。在 PHPWord 配置文件中将其设置为 true 的 outputEscapingEnabled 选项

    在运行时使用以下指令:

    \PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多