使用@符号识别像twitter这样的用户

时间:2010-03-29 17:42:07

标签: php regex twitter

我正在创建自己的twitter版本,我不知道如何让我的后端php脚本在输入的文本中选取@membername。包括多个@ membername,例如@billy @joseph,@ tyrone,@ kesha message

@billy打了@tyrone他正在责怪@kesha关于你欠他的钱。

关于如何实现这一目标的任何使用脚本?

4 个答案:

答案 0 :(得分:8)

如何使用正则表达式和preg_match_all,如下所示:

$str = "Including multiple @membername's for example @billy @joseph, @tyrone,@kesha message ";
if (preg_match_all('#(@\w+)#', $str, $m)) {
    var_dump($m[1]);
}


哪个会给你以下输出:

array
  0 => string '@membername' (length=11)
  1 => string '@billy' (length=6)
  2 => string '@joseph' (length=7)
  3 => string '@tyrone' (length=7)
  4 => string '@kesha' (length=6)


基本上,在这里,我在我的正则表达式中使用的模式匹配:

答案 1 :(得分:2)

有一个PHP库,旨在符合Twitter的标准。它可能会为您节省很多麻烦。它支持自动链接以及@screen_names,#hashtgs和@ screen_name / lists的提取。

http://github.com/mzsanford/twitter-text-php

答案 2 :(得分:1)

我写了一个很久以前处理这个问题的Wordpress插件。这是我用于此的功能。

function convert_twitter_link($content) {
    $pattern    = '/\@([a-zA-Z0-9_]+) /';
    $replace    = '<a rel="nofollow" target="_blank" href="http://twitter.com/'.strtolower('\1').'">@\1</a>';
    return preg_replace($pattern,$replace,$content);
}

答案 3 :(得分:0)

一切都取决于你如何设置...你的用户名可以有空格吗?如果没有,那么只需简单地解析消息字符串“@”并拾取所有后来的字符,直到遇到空格......这是一种简单的方法来完成它。

问题的另一面是,一旦你“找到”它们,你在用户名做什么?