我的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))
但它没有给出相同的结果。有人可以帮忙吗?
答案 0 :(得分:0)
但它没有给出相同的结果。
您在'\\1'
替换字符串中使用preg_replace
。 preg_replace_callback
function($m)
正文中的等效词不是$m
,而是$m[1]
。
答案 1 :(得分:0)
您还可以使用T-Regx library的干净界面
pattern('<([^>]+)>', 's')->replace($input)->callback(function (Match $m) {
return '<' . sanitize($m, 5) . '>';
});