【发布时间】:2011-04-02 09:51:44
【问题描述】:
您好,我有这样的事情:
$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> 为假?
【问题讨论】:
-
这太不安全了!
-
我发布的代码或我想要实现的目标?
-
您的代码。根据经验:永远不要使用
e-修饰符或eval。有例外,但很少见。现在我可以做一个简单的<code>', eval(My code goes here), '</code>并且会为您的站点提供一个不错的任意代码执行控制台;) -
我有个借口:不是我写的 :) 我正在尝试为我的网站创建一个简单的语法荧光笔,这就是我迄今为止通过谷歌找到的内容
-
为什么不使用 preg_match_all() 来获取所有匹配项而不是使用结果?