此表达式的preg_replace_callback

时间:2014-12-18 08:22:28

标签: php regex

我的php文件中有一个preg_replace代码: -

preg_replace('/<([^>]+)>/es', "'<'.sanitize('\\1',5).'>'",strip_tags($var, $allowable_tags))

我想将其转换为preg_replace_callback。

preg_replace_callback('/<([^>]+)>/s', function($m){return '<'.sanitize($m,5).'>';},strip_tags($var, $allowable_tags))

但它没有给出相同的结果。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

  

但它没有给出相同的结果。

您在'\\1'替换字符串中使用preg_replacepreg_replace_callback function($m)正文中的等效词不是$m,而是$m[1]

答案 1 :(得分:0)

您还可以使用T-Regx library的干净界面

pattern('<([^>]+)>', 's')->replace($input)->callback(function (Match $m) {
    return '<' . sanitize($m, 5) . '>';
});