2014-03-25 66 views
0

我想做一个报价系统,但我如何获得preg_replace变量到服务器变量?preg_replace服务器变量中的变量

不明白?,这里是剧本!

$input = preg_replace("#\[quote id=(.*?)\]#si", "<blockquote><p>" . $class->functions('\\1') . "</p><p>..</p></blockquote>", $input); 

问题:该函数不知道什么\\1后$ mysqli-意味着> real_escape_string(),并返回\1,如果我删除real_escape_string它仍然说,它不存在于数据库中..但它的存在!

如何解决这个问题?

回答

0

您不能像这样使用反向引用。你需要使用像preg_replace_callback:

function callback_function($m) { 
    return "<blockquote><p>" . $class->functions($m[1]) . "</p><p>..</p></blockquote>"; 
} 
preg_replace_callback("#\[quote id=(.*?)\]#si", "callback_function", $input); 
+0

几乎工作,但preg_replace是INSIDE里面一个INSIDE函数..如何? –

+0

如果您的PHP版本大于等于5.3.0,您可以使用匿名函数,如:'preg_replace_callback(“#\ [quote id =(。*?)\]#si”,function($ m){return“

“。$ class-> functions($ m [1])。”

..

“;},$ input);',这样就不必定义一个函数。 – mesutozer

+0

这就是现在工作正常,但在$ m [1]逃跑后它说没有结果,但我知道它在那里.. –