【发布时间】:2018-05-10 05:52:49
【问题描述】:
使用 preg_replace_callback 会怎样?
$str = preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\\1',{$lo})", $str);
【问题讨论】:
标签: preg-replace deprecated preg-replace-callback
使用 preg_replace_callback 会怎样?
$str = preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\\1',{$lo})", $str);
【问题讨论】:
标签: preg-replace deprecated preg-replace-callback
如果我没记错的话,您想使用preg_replace_callback 而不是/e modifier。
如果您想向回调函数传递额外的参数,您可以使用use indentifier 或将回调包装在another function 中。
第二个示例可能如下所示:
$str = preg_replace_callback(
'/\&\#([0-9]+)\;/m', function ($matches) use ($lo) {
// function body with return statement
}, $str
);
备注
您的正则表达式\&\#([0-9]+)\; 将匹配𸽵 之类的字符串。我认为您不必逃避& 和#。
在您的代码中,您使用return strtoupper($matches[1], $lo);,但strtoupper 采用一个参数而不是两个参数。
如果这是您想要匹配的内容,那么在运行 your code 时,您会看到 $matches[1] 包含 "233333",因此这将被称为 return strtoupper("233333");
【讨论】: