<?php function lstmsg($txt,$send='有人提到你') { if(preg_match_all("!(@|@)([\\x{4e00}-\\x{9fa5}A-Za-z0-9_\\-]{1,})(\x20| |<|\xC2\xA0|\r|\n|\x03|\t|,|\\?|\\!|:|;|,|。|?|!|:|;|、|…|$)(.*?)!ue",$txt,$rs)) { $s=preg_replace("!(@|@)([\\x{4e00}-\\x{9fa5}A-Za-z0-9_\\-]{1,})(\x20| |<|\xC2\xA0|\r|\n|\x03|\t|,|\\?|\\!|:|;|,|。|?|!|:|;|、|…|$)!ue","'@\\2 \\3'",$txt); /* 为了捕捉小片段 如果输入的是 @100。。。。,那么将会变成 @100 。。。。,方便使用strpos函数获取字符所在位置 */ $ary=array(); foreach($rs[2] as $v) { $n=strpos($s,'@'.$v.' ');//得到所在位置 $msgtxt=mb_substr($s,$n,15,'utf-8').'......';//截取片段 if(ctype_digit($v)){//如果是纯数字,则认为是uid $ary[$v]=$msgtxt; continue; }else{//不是纯数字, $ary[$this->getuid($v)]=$msgtxt; } } foreach ($ary as $key=>$val) {//遍历数组,覆盖重复键名(键名就是uid) $arr[$key]=$val; } foreach ($arr as $key=>$val) {//发送提醒信息 if($this->isdata($key)) {//uid是否存在 $this->lstmsg_add($key,$send.'[br]'.$val); } } } } ?>