在PHP函数中从tweet中检索所有用户名

时间:2016-05-22 02:00:49

标签: php function twitter preg-match-all hashtag

我有这个函数,它为字符串

中包含的每个@username着色
 //color  @username
 function hashtag_links($string,$id_session) {
 preg_match_all('/@(\w+)/',$string,$matches);
 foreach ($matches[1] as $match) {
$string = str_replace("@$match", "<span class=color>@$match</span>", "$string");
 }
 return $string;
 }

当用户名不同时(@ cat,@ pencil,@ scubadiving),一切都很好,但是如果用户名以相同的字母开头(@ cat,@ caterpiller,@ cattering),则函数只会为重复的字母着色在这种情况下(@cat),该怎么办?

2 个答案:

答案 0 :(得分:2)

改为使用preg_replace:

//color  @username
function hashtag_links($string,$id_session) {
    return preg_replace('/@(\w+)/', '<span class=color>@$1</span>', $string);
}

答案 1 :(得分:0)

嗯...假设你有这样的字符串:

$string='Hey there, folks! @bob, @kevin, @bobby, @keverino';

我会尝试类似的事情:

preg_replace('/(@[A-Za-z0-9]+)/','<span style="color:pink;">\1</span>',$string);

当然,我不知道你的用户名可以包含什么,所以你可能需要调整正则表达式。