【发布时间】:2014-02-16 22:16:34
【问题描述】:
在这个 sn-p 中,我在 PHP 5.5 中遇到了著名的错误 preg_replace(): The /e modifier is deprecated, use preg_replace_callback。
if (stripos($message, '[' . $tag . ']') !== false)
$message = preg_replace('~\[' . $tag . ']((?>[^[]|\[(?!/?' . $tag . '])|(?R))+?)\[/' . $tag . ']~ie',
"'[" . $tag . "]' . str_ireplace('[smg', '[smg', '$1') . '[/" . $tag . "]'", $message);
有人告诉我我需要这样做:
- 在函数调用中添加_callback,
- 删除“e”修饰符,
-
并将替换字符串替换为:
function ($match) use ($tag) { return '[' . $tag . ']' . str_ireplace('[smg', '[smg', $match[1]) . '[/' . $tag . ']'; }
你能帮我解决这个问题吗?我真的不知道该怎么做......
【问题讨论】:
-
添加一个示例字符串以及您希望获得的内容将非常有帮助,如果希望有人做的不仅仅是简单的翻译并改进您的代码。
-
如果我理解得很好,这样做的目的是用
[替换[$tag]标记内所有嵌套级别中smg之前的所有[? -
我一发现就会告诉你!
标签: php regex preg-replace preg-replace-callback