使用preg_replace中的函数

时间:2012-03-04 02:23:25

标签: php regex preg-replace

$TOPIC_CONTENT = preg_replace("!<code>(.+)</code>!is","<div style='color: #00FF00;
background-color: #000000; border-radius: 5px; margin: 5px;"<pre>".htmlspecialchars("$0")."</pre></div>",$TOPIC_INFO->content);

我怎样才能让它发挥作用?我不知道如何解决这个问题,我知道我目前的方式无效。

2 个答案:

答案 0 :(得分:3)

使用preg_replace_callback。对你的正则表达式要小心..我想你想使用.+?而不只是.+。通常的口头禅是“不要用正则表达式解析html”,但对于像这样简单的事情,我没有看到它的危害。

答案 1 :(得分:2)

除了tandu的答案中的preg_replace_callback之外,您还可以使用/e开关,并且您的替换字符串将被* e * *评估为PHP代码,并且将使用其结果。

你可以这样做:

preg_replace("!<code>(.+?)</code>!ise",
    '"<pre style=\"color: #0f0; background: #000;\">" . htmlspecialchars("$1") . "</pre>"',
    $string);
相关问题