我有来自数据库的带有段落、空格和对齐文本的文本。
你好。
我的名字是约翰。
谢谢
但是当我使用 PHP Word 和 TemplateProcessor 移动到 Word 文档时,它会生成没有段落的所有内容。
我为此找到的一种解决方案是这样做:
$text=preg_replace('/\v+|\\\r\\\n/','<w:p/>',$TextWhitoutParagraphs);
他实际上是用段落来写的,但只有第一段是合理的。
如何正确使用段落和所有文本对齐?
您可以使用克隆块。我将它与合理的文本一起使用,并且效果很好。在您的模板中使用:
${paragraph}
${text}
${/paragraph}
然后通过“\n”来爆炸你的字符串:
$textData = explode("\n", $text);
$replacements = [];
foreach($textData as $text) {
$replacements[] = ['text' => $text];
}
$templateProcessor->cloneBlock('paragraph', count($replacements), true, false, $replacements);
TemplateProcessor 只能与单行字符串一起使用(请参阅文档:“只能替换单行值。” http://phpword.readthedocs.io/en/latest/templates-processing.html)
你可以尝试用 '' 替换你的新行(关闭打开的段落并开始一个新的段落),但这只是我现在的猜测。检查生成的 Word-XML 是否存在语法错误总是有帮助的。