由于某种原因,我的preg_replace呼叫无法正常工作,我已经检查了我能想到的一切无济于事。有什么建议吗?
foreach ($this->vars as $key=>$var)
{
preg_replace("/\{$key\}/", $var, $this->tempContentXML);
}
vars是一个包含需要在字符串中替换的$ key->值的数组,tempContentXML是一个包含XML数据的字符串。
一串字符串
...<table:table-cell table:style-name="Table3.B1" office:value-type="string"><text:p text:style-name="P9">{Reference}</text:p></table:table-cell></table:table-row><table:table-row table:style-name="Table3.1"><...
EX。
$this->vars['Reference'] = Test;
foreach ($this->vars as $key=>$var)
{
preg_replace("/\{$key\}/", $var, $this->tempContentXML);
}
这应该用$ key
中数组中的值替换字符串{Reference}但它没有用。
答案 0 :(得分:3)
替换不会就地发生(返回新字符串)。
foreach ($this->vars as $key=>$var) {
$this->tempContentXML = preg_replace("/\{$key\}/", $var, $this->tempContentXML);
}
除此之外,不要使用正则表达式进行普通字符串替换(假设$this->vars
不包含正则表达式):
foreach ($this->vars as $key=>$var) {
$this->tempContentXML = str_replace('{'.$key.'}', $var, $this->tempContentXML);
}