discuz论坛私信表情内容在php7环境不显示,preg_replace不兼容问题

在PHP7.1.9环境下,Discuz3.4论坛的私信表情内容出现不显示的问题,原因是preg_replace函数的不兼容。解决方案是将preg_replace替换为preg_replace_callback。具体涉及uc_clientlibuccde.class.php文件中两处代码的修改,以解决邮件和引用内容的解析问题。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值