我正在使用phpdocx-premium-12.5-ns。我用像%%variable%%这样的变量创建了一个文档,然后我尝试了下面的代码:
require_once 'classes/CreateDocx.php';
$docx = new CreateDocxFromTemplate('document.docx');
$docx->setTemplateSymbol('%%', '%%');
print_r($docx->getTemplateVariables()); 但是它不返回任何内容,如果我添加一个像${variable}这样的变量,它将作为${variable}返回。
如果设置符号$docx->setTemplateSymbol('${', '}'),它将正常工作,并返回variable。
我的问题是:如何使用这个变量%%variable%%并使用%%作为模板符号来获取所有现有变量?
当我在“CreateDocxFromTemplate.php”类的代码中签入时,他们将extractVariablesDistinctSymbols称为extractVariablesDistinctSymbols,其中只preg_match这个模式:\$(?:\{|[^{$]*\>\{)[^}$]*\}
发布于 2022-08-25 06:54:59
我从phpdocx那里得到了答案
用于包装模板变量的字符或符号可能是:
相同的开始和结束(只设置$templateSymbolStart):$VAR$,#VAR#.一个1字节的字符。在开头和结尾不同:${VAR}。请求使用${ }包装不使用相同符号的占位符。
开始和结束时,要使用其他符号,必须自定义公共静态变量CreateDocxFromTemplate::$regExprVariableSymbols。
如果模板使用符号将占位符包装为大于1字节字符(%为%),或者在开头和结尾不同,则需要自定义公共静态变量CreateDocxFromTemplate::$regExprVariableSymbols.一个简单的样本:
CreateDocxFromTemplate::$regExprVariableSymbols =‘%(.*)%;$docx-setTemplateSymbol(’%%‘);
我们建议使用单个1字节字符或${}来包装占位符,因此不需要生成自定义的CreateDocxFromTemplate::$regExprVariableSymbols.这使用正则表达式,因此在使用受保护字符时必须转义.。
https://stackoverflow.com/questions/73482457
复制相似问题