Как я могу найти ссылки профиля Twitter с регулярным выражением? - PullRequest
1 голос
/ 13 декабря 2011

Я хочу разобрать HTML-документы на наличие ссылок на профили Twitter, используя регулярные выражения и preg_match_all () в PHP. Ссылки в твиттере имеют вид:

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

Я хочу получать ссылки только на страницу профиля (например, ничего после имени твиттера).

Я бы хотел обрабатывать как http, так и https (потому что это часто встречается в этих ссылках).

Я также хотел бы обработать //www.twitter.com и //twitter.com (также распространенный).

Как мне структурировать свое регулярное выражение?

Ответы [ 4 ]

2 голосов
/ 13 декабря 2011

Самое общее регулярное выражение (которое заканчивается на "/" или пробел):

(https?:)?\/\/(www\.)?twitter.com\/(#!\/)?([^\/ ].)+
2 голосов
/ 13 декабря 2011

Как насчет чего-то вроде:

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

Я не уверен, что все символы действительны в дескрипторе Twitter, но я предполагаю 0-9, буквы и подчеркивания.

Вероятно, лучше всего запустить его в режиме без учета регистра, а также избавиться от A-Z.

1 голос
/ 13 декабря 2011

Попробуйте следующее:

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

$matches[1] содержит соответствующие имена пользователей.

РЕДАКТИРОВАТЬ : Для получения дополнительной информации о том, какие символы могут отображаться в имени пользователя, см. этот ответ , а для более общей информации см. на этой странице Twitter Engineering .

1 голос
/ 13 декабря 2011

Попробуйте

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

Не знаю точно, какие символы могут быть внутри имени пользователя в твиттере, поэтому я предположил [a-z0-9 _] +. $ matched [1] должно быть именем пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...