简单的正则表达式问题:如何在html页面上找到所有@username提及?

时间:2010-02-20 20:04:36

标签: php regex

我是php中正则表达式的新手。

我有一长串html。我想找到所有出现的:

@any_username_after_an_at_sign

有人可以帮我恢复网页上的所有用户名吗? 我认为你使用preg_match,但我不知道要使用的正则表达式。

谢谢!

4 个答案:

答案 0 :(得分:1)

你可以尝试:

/@\w+/

但是这可能会发现一些错误的匹配,例如电子邮件地址的一部分。你能告诉我们一些关于背景的事吗?

考虑使用HTML解析器也可能是相关的,尽管没有更多信息很难确定。

答案 1 :(得分:1)

简单:

preg_match_all('~@(\w+)\b~', '@me @you', $usernames);
print_r($usernames);

结果:

Array (
  [0] => Array(
    [0] => @me
    [1] => @you
  )
  [1] => Array (
    [0] => me
    [1] => you
  )
)

获得此功能后,只需将这些内容与用户的数据库表进行匹配即可清除误报。在执行此操作之前,您可能还需要strip_tags()以避免从内部属性中获取文本。

答案 2 :(得分:0)

试试这个:

@\S+

并使用preg_match_all

答案 3 :(得分:0)

考虑到twitter page的背景,这样的事情可能有用。

'@<a class="tweet-url username"[^>]*>([^<]*)</a>'

但对于此类问题,正确的解析器总是比正则表达式更好