在这段代码中,我得到了PHP 5.5中着名的错误preg_replace(): The /e modifier is deprecated, use preg_replace_callback
。用preg_replace_callback替换/ e修饰符
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'之前的所有'[''? –
只要我发现,就会告诉你! – MultiformeIngegno