PHP preg_replace:使用变量

时间:2011-02-19 11:57:31

标签: php preg-replace

我在使用preg_replace中的变量时遇到问题。 基本上我想要实现的是在文本中查找一些模式,并用内容替换它们。替换是在单独的函数(retrieveValue())中完成的。但是我在传递变量('$ 1')时遇到了困难。

$types = array(
        array(
                '/\*#(.*?)#\*/',
                $this->retrieveValue($templateVars,'$1')    
             )
        );

    foreach ($types as $type) {
        $template = preg_replace($type[0], $type[1], $template);
    }  

1 个答案:

答案 0 :(得分:4)

问题是$this->retrieveValue($templateVars,'$1')在<{>> 之前执行 preg_replace

解决方案:查看preg_replace_callback

我建议你在班上创建一个新方法:

public function _replace($matches) {
    return $this->retrieveValue($templateVars, $matches[1]);
}

然后可以使用:

preg_replace_callback('/\*#(.*?)#\*/', array($this, '_replace'), $template);

您还可以在PHP 5.3中使用anonymous functions