如何找到正则表达式的twitter个人资料链接?

时间:2011-12-12 22:35:37

标签: php regex twitter

我想在PHP中使用regex和preg_match_all()解析html文档以获取twitter配置文件的链接。 twitter链接采用以下形式:

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

我只想抓取纯粹属于个人资料页面的链接(例如,在twitter_name之后没有任何内容)。

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

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

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

4 个答案:

答案 0 :(得分:2)

如下:

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

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

可能最好在不区分大小写的模式下运行它,并且除去A-Z

答案 1 :(得分:2)

大多数一般正则表达式(停在“/”或空格处):

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

答案 2 :(得分:1)

尝试

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

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

答案 3 :(得分:1)

尝试以下方法:

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

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

修改:有关用户名中可显示哪些字符的详细信息,请参阅this answer,有关更多常规信息,请参阅this Twitter Engineering page