我正在使用PHPWord來讀取我的docx模板,並在處理結束時從模板中刪除所有搜索模式。在DOCX模板中的搜索模式是PHPWord - 從Word文檔中刪除所有搜索模式
${SOMETAG}
text block
${/SOMETAG}
的DOCX背後的XML有看起來像這樣的結構:
<w:p w:rsidR="00E21534" w:rsidRDefault="00E21534" w:rsidP="00E21534"><w:r><w:t>${SOMETAG}</w:t></w:r></w:p><w:p w:rsidR="00E21534" w:rsidRDefault="00E21534" w:rsidP="00E21534"><w:r><w:t>text block</w:t></w:r></w:p><w:p w:rsidR="00E21534" w:rsidRDefault="00E21534" w:rsidP="00E21534"><w:r><w:t>${/SOMETAG}</w:t></w:r></w:p>
這是我寫刪除開始標記功能即$ {SOMETAG},但它似乎無法找到標籤。我認爲問題在於我的preg_match_all中的模式。你能告訴我我在這裏做錯了嗎?
public function removeSearchPatterns()
{
//search for ${*}
preg_match_all(
'/(${.*})/is',
$this->tempDocumentMainPart,
$matches,
PREG_SET_ORDER
);
//remove ${*}
foreach ($matches as $match){
if (isset($match[0])) {
$this->tempDocumentMainPart = str_replace(
$match[0],
'',
$this->tempDocumentMainPart
);
}
}
}