我是php中正则表达式的新手。
我有一长串html。我想找到所有出现的:
@any_username_after_an_at_sign
有人可以帮我恢复网页上的所有用户名吗? 我认为你使用preg_match,但我不知道要使用的正则表达式。
谢谢!
答案 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>'
但对于此类问题,正确的解析器总是比正则表达式更好