public function getHrefUsername($txt) {
$txt = $txt . " ";
$out = array();
if (strstr($txt, '@')) {
$txt = str_replace(':', ':', $txt);
$txt = str_replace(' ', ' ', $txt);
$txt = preg_replace('/@([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff\.]*)[\s|\:]/', '<a href="http://'._DOMAIN_.'/user/center?username=$1" target="_blank">@$1</a> ', $txt);
}
return $txt;
}
如上的正则就是过滤出来@后人名的正则,然后对其单独的人名进行处理就可以了。
@使用后的人名全部加上链接
还可以使用回调函数来验证用户名是否存在:
public function getHrefUsername($txt) {
$txt = $txt . " ";
$out = array();
if (strstr($txt, '@')) {
$txt = str_replace(':', ':', $txt);
$txt = str_replace(' ', ' ', $txt);
$txt = preg_replace_callback('/@([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff\.]*)[\s|\:]/', array('self', 'regFormatUser'), $txt);
}
return $txt;
}
public function regFormatUser($mat){
if($mat[1]){
$aInfo = $this->getInfoByUsername($mat[1]);
if (1 == $aInfo['status'] && !empty($aInfo['info'])) {
return '<a href="http://'._URI_ROOT_.'/user/center?username='.$mat[1].'" target="_blank">@'.$mat[1].'</a> ';
}else{
return '@'.$mat[1].' ';
}
}
}
检验用户名是否存在