我使用正则表达式将@user名称转换为链接。 例如,如果用户输入@Alex Ferguson,它应该将Alex Ferguson转换为超链接。 在这里,它将第一个名称转换为超链接并排除姓氏。如果第一个名称和姓氏之间没有空格,它可以正常查找更接近@的单词。 有没有办法将名字和姓氏都转换为超链接。
这是我的代码:
function convert($msg){
$message = preg_replace(array('/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))/', '/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '/(^|[^a-z0-9_])#([a-z0-9_]+)/i'), array('<a href="$1" target="_blank">$1</a>', '$1<a href="">@$2</a>', '$1<a href="index.php?hashtag=$2">#$2</a>'), $msg);
return $message;
}
谢谢..
答案 0 :(得分:1)
这方面的一般方法是:
$regex = '~(?i)@[a-z]+[ ][a-z]+~';
$replaced = preg_replace($regex,'<a href="">$0</a>',$string);
备注强>