PHPWord / TemplateProcessor如何制作段落

时间:2018-04-12 18:56:22

标签: php phpword phpoffice

我的文字包含段落,空格和来自数据库的正统文本。

  

您好。

     

我的名字是约翰。

     

谢谢

但是当我使用带有TemplateProcessor的PHP Word移动到Word文档时,它会生成没有段落的所有内容。

我发现的一个解决方案就是这样做:

$text=preg_replace('/\v+|\\\r\\\n/','<w:p/>',$TextWhitoutParagraphs);

他实际上是用段落写的,但只有第一段是合理的。

如何正确地使用段落和所有文本进行正确处理?

2 个答案:

答案 0 :(得分:1)

您可以使用cloneBlock。我将其与合理的文本一起使用,并且效果很好。在您的模板中使用:

${paragraph}
${text}
${/paragraph}

然后用“ \ n”将您的字符串炸开:

$textData = explode("\n", $text);
$replacements = [];
foreach($textData as $text) {
    $replacements[] = ['text' => $text];
}
$templateProcessor->cloneBlock('paragraph', count($replacements), true, false, $replacements);

答案 1 :(得分:0)

TemplateProcessor只能与单行字符串一起使用(请参阅文档:“只能替换单行值。”http://phpword.readthedocs.io/en/latest/templates-processing.html

你可以尝试用''替换你的新行(关闭已打开的段落并开始一个新段落),但这只是我现在的猜测。检查生成的Word-XML是否存在语法错误总是有帮助的。