php preg_replace没有做任何事情

时间:2011-10-11 06:36:13

标签: php preg-replace

由于某种原因,我的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}

但它没有用。

1 个答案:

答案 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);
}