PHP Word -从模板中删除占位符,以便它不会留下空白(空白行)



我正在使用PHPWord基于模板生成报告。

我替换了模板中的占位符

$templateProcessor = new TemplateProcessor('template.docx');
$templateProcessor->setValue('placeholder_name', 'value5123');

并保存新文件

$templateProcessor->saveAs('report.docx');

非常简单。

然而,有一些值是可选的,所以它们留下了一些占位符,我能做的最好的就是用一个空字符串替换它们,这仍然留下空行。

是否有一种方法可以完全删除占位符表达式并防止它(和空白行)显示在最终文件中?

感谢

我知道这是一个老问题,但是几个小时前,另一个用户在评论中问我是否找到了解决方案。是的,我做到了。

removeTemplateVariable方法可用于删除空占位符,而不创建空行。以下是文档:https://www.phpdocx.com/api-documentation/templates/remove-template-variable

示例代码:

foreach ($getVariables as $k => $v) {
if (empty($v)) {
$templateProcessor->removeTemplateVariable($k);
continue;
}
$templateProcessor->setValue($k, $v);
}

这对我有用。你可以用block来达到这个目的。您将占位符放入块中。假设你的模板是这样的:

${placeholder_block}
${placeholder_value}
${/placeholder_block}

然后,在代码

// check condition if having value
if ($placeholder) {
$templateProcessor->cloneBlock('placeholder_block', 1, true, true);
$templateProcessor->setValue('placeholder_name', 'value5123');
}
else {
$templateProcessor->cloneBlock('placeholder_block', 0, true, true);
}

希望这对你有帮助!

最新更新