我正在创建自己的twitter版本,我不知道如何让我的后端php脚本在输入的文本中选取@membername。包括多个@ membername,例如@billy @joseph,@ tyrone,@ kesha message
或
@billy打了@tyrone他正在责怪@kesha关于你欠他的钱。关于如何实现这一目标的任何使用脚本?
答案 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)
基本上,在这里,我在我的正则表达式中使用的模式匹配:
@
个字符\w+
答案 1 :(得分:2)
有一个PHP库,旨在符合Twitter的标准。它可能会为您节省很多麻烦。它支持自动链接以及@screen_names,#hashtgs和@ screen_name / lists的提取。
答案 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)
一切都取决于你如何设置...你的用户名可以有空格吗?如果没有,那么只需简单地解析消息字符串“@”并拾取所有后来的字符,直到遇到空格......这是一种简单的方法来完成它。
问题的另一面是,一旦你“找到”它们,你在用户名做什么?