对于原始的discuz的@圈人功能,存在一下几个缺陷:
1/ 如果在圈人的时候,在其后不小心对人名进行了字体/颜色/大小之类的样式设定时,如[i]@02nice[/i],后台逻辑代码中分析到的人名会无法匹配
2/ 如果在圈人的时候,在人名之后换行,后台也会无法匹配
修改方式:
在论坛用户发表主题/回复/发帖时,对于用户编辑内容提交过程中,圈人增加用户链接的效果内容是会保存在数据库中的。
主要有三个文件,三处内容相似:
post_newthread.php
post_newreply.php
post_editpost.php
修改方式$tmp_search ,通过正则表达式,将获取到的人名进行过滤,将包含[/b],[/color],[/u]等样式字符过滤掉,保留原始的人名,当然这里所不考虑含有这些字符串的人名。
if($_G['group']['allowat']) {
$atlist = $atlist_tmp = array();
preg_match_all("/@([^\r\n]*?)\s/i", $message.' ', $atlist_tmp);
$atlist_tmp = array_slice(array_unique($atlist_tmp[1]), 0, $_G['group']['allowat']);
if(!empty($atli