不推荐使用/ e修饰符,而是使用preg_replace_callback - wordpress插件

时间:2016-01-09 10:00:38

标签: php wordpress preg-replace preg-replace-callback

所以我找到了这个wordpress插件,它是唯一提供我需要的插件,但它已经过时了:/ 这是错误:

  

不推荐使用:preg_replace()[function.preg-replace]:不推荐使用/ e修饰符,而是使用preg_replace_callback

这是导致错误的代码:

$brform = preg_replace('/<p>(<input\stype="hidden"(?:.*?))<\/p>/isme', "'<div style=\'display:none;\'>'.\"\n\".str_replace('<br>', '', str_replace('<br />', '', stripslashes_deep('\\1'))).\"\n\".'</div>'", $form);

我知道答案就在这里,但我不能让它在这行代码上工作,这就是我在这里问的原因。如果所有这些html和CSS都在那里怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用匿名函数将匹配项传递给您的函数:

$result = preg_replace_callback(
    "/\{([<>])([a-zA-Z0-9_]*)(\?{0,1})([a-zA-Z0-9_]*)\}(.*)\{\\1\/\\2\}/isU",
    function($m) { return CallFunction($m[1], $m[2], $m[3], $m[4], $m[5]); },
    $result
);

除了更快,这也将正确处理字符串中的双引号。您使用/ e的当前代码将转换双引号&#34;进入\&#34;。

来源:Replace deprecated preg_replace /e with preg_replace_callback