discuz3.4版本,最近维护一个discuz老项目,发现私信聊天的时候,如果包含表情、链接标签等非纯文字内容,聊天内容在对话框就无法显示,发现这是php7.1.9版本不兼容preg_replace,最后只能preg_replace给成preg_replace_callback,主要修改uc_client\lib\uccde.class.php
代码如下:
1、$message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "\$this->codedisp('\\1')", $message);
改成
$message = preg_replace_callback("/\s*\[code\](.+?)\[\/code\]\s*/is", function ($matches) { return $this->codedisp($matches[1]); }, $message); 2、$message = preg_replace("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/|www\.)([^\[\"']+?))?\](.+?)\[\/url\]/ies", "\$this->parseurl('\\1', '\\5')", $message);
改成
$message = preg_replace_callback("/\[url(=((https?|ftp|gopher|news|telnet|rt