我如何找到推特个人资料链接与正则表达式


How can I find twitter profile links with a regex?

我想在PHP中使用regex和preg_match_all()解析html文档中的twitter配置文件链接。twitter链接如下:

http(s)://twitter.com/#!/twitter_name

我只想抓取的链接是纯粹的个人资料页(如。

我想处理http和https(因为这在这些链接中很常见)。

我还想处理//www.twitter.com和//twitter.com(也很常见)。

我应该如何构建我的正则表达式?

最通用的正则表达式(止于"/"或空格):

(https?:)?'/'/(www'.)?twitter.com'/(#!'/)?([^'/ ].)+

不如这样写:

(https?:)*'/'/(www.)*twitter.com'/#!/([A-Za-z0-9_]*)

我不确定在Twitter句柄中哪些字符是有效的,但我假设0-9,字母和下划线。

最好在不区分大小写模式下运行,并去掉A-Z

Try

preg_match_all('|https?://(?:www'.)?twitter.com/#!/[a-z0-9_]+|im', $text, $matched)

不知道确切的字符可以在推特用户名,所以我假设[a-z0-9_]+。$matched[1]应该是用户名

尝试如下:

preg_match_all('~https?://(?:www'.)?twitter.com/#!/([a-z0-9_]+)~im', $html, $matches);

$matches[1]包含匹配的用户名。

EDIT:有关用户名中可以出现哪些字符的更多信息,请参阅此回答,更多一般信息请参阅此Twitter工程页面。