使用“e”修饰符替代preg_replace

时间:2012-03-04 18:56:51

标签: php regex

我有这条线......

preg_replace('/([^\x20-\x7e])/e', '"\\\\\\x" . dechex(ord("${1}"))', $string);

...它正在生成关于使用/ e修饰符使用preg_replace()的警告。

我正在寻找有关如何用替代方案替换此正则表达式的一些提示。

我认为“preg_replace_callback”可以作为替代方案,但在实际实施时需要一些帮助。

我已阅读PHP manual但仍在努力,我的问题是与原版相关的preg_replace_callback替代版本之一。

这有效吗?

function myCallback($matches) {
    return '"\\\\\\x" . dechex(ord($matches[1]))';
}
preg_replace_callback('/([^\x20-\x7e])/', 'myCallback', $string);

1 个答案:

答案 0 :(得分:2)

您不返回代码,返回要替换的实际值,如下所示:

function myCallback($matches) {
    return "\\\\\\x" . dechex(ord($matches[1]));
}