从@Twitter获取像string这样的用户名数组

时间:2014-07-30 05:32:15

标签: php regex

我如何通过' @'从Twitter中标记的字符串中获取一系列用户名。使用正则表达式或类似的前缀?

例如:

输入: hello @person my name is @joebloggs

输出(数组):

['person', 'joebloggs']

3 个答案:

答案 0 :(得分:2)

这样做:

$regex = '~@\K\S+~';
preg_match_all($regex, $yourstring, $matches);
print_r($matches[0]);

查看 Regex Demo 中的匹配项。

<强>解释

  • @匹配AT(但不会返回)
  • \K告诉引擎放弃与其返回的最终匹配项目匹配的内容
  • \S+匹配任何非空格字符

答案 1 :(得分:2)

另一种解决方案

@[^\s]+

用法:

$string = 'hello @person my name is @joebloggs';
$pattern = '/@[^\s]+/';
preg_match_all($pattern, $string, $matches);
print_r($matches[0]);

输出:

Array
(
    [0] => @person
    [1] => @joebloggs
)

答案 2 :(得分:1)

使用它:

<?php
$re = "/(?<=@)[^\s]+/";
$str = "asdasd asda 232 @asdasd sd232 soi @other asdnasda asjdajh @asdasd";

preg_match_all($re, $str, $matches);

print_r($matches);

演示:https://eval.in/173103

输出:

Array
(
    [0] => Array
        (
            [0] => asdasd
            [1] => other
            [2] => asdasd
        )

)