PHP传递函数参数里面的preg_replace

问题描述:

您好我有这样的事情:PHP传递函数参数里面的preg_replace

$content = preg_replace('#(\s*)\<pre(.*?)\>(.*?)\</pre\>(\s*)#sie', 'dostuff(\'\\3\', \'\\2\', $content, \'\', \'\\1\', \'\\4\');', $content); 

$content = preg_replace('#(\s*)\<code(.*?)\>(.*?)\</code\>(\s*)#sie', 'dostuff(\'\\3\', \'\\2\', $content, \'\', \'\\1\', \'\\4\');', $content); 

我如何传递一个真/假参数的dostuff函数内部,这取决于正在被正则表达的元素?如果它是<pre>是真的,并且它的<code>是假的?

+2

***这是UNBELIEVABLY不安全!*** – NikiC 2011-04-02 09:53:39

+0

我发布的代码或我想要实现的代码? – Alex 2011-04-02 09:55:59

+0

您的代码。作为一个经验法则:不要使用'e'-modifier或'eval'。有例外,但很少见。现在我可以做一个简单的'', eval(My code goes here), '',并且为您的站点设置一个不错的任意代码执行控制台;) – NikiC 2011-04-02 10:00:47

你为什么不在你的正则表达式中使用(pre|code)?您将能够使用$n\n引用HTML标记的名称并将其用作dostuff()的参数。