Найти URL и текст ссылки из строки, используя PHP-код - PullRequest
0 голосов
/ 15 ноября 2011

Я хочу найти URL и гипертекст из абзаца

например:

$content = "<a href="http://google.com" target="_blank">Google</a> The biggest
search engine is google .The lot of people are used google 
<a href="http://google.com" target="_blank">Google</a>The google video 
service is youtube. <a href="http://youtube.com/ncvh/">Youtube</a>.
Google also provide <a href="http:/gmail.com">Gmail</a>.";

вывод как

Text        Url                         Count   

Google      htp://google.com             2
Youtube     htp://youtube.com/ncvh/      1
Gmail       htp://gmail.com              1

пожалуйста, кто-нибудь, помогите мне

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Я создал довольно много html-парсеров. Лучший способ для меня:

preg_match_all('_<a(.*?)>(.*?)</a_i', $html, &$matches); чтобы получить атрибут и текст привязки

preg_match('_href[\s]*=[\s]*[\'"](.*?)[\'"]_', $attrs, &$href) чтобы получить href

Разбор href для правильного URL:

$url = str_replace(array(" ", "\n", "\r", "\t"), '', $url);
$url_components = parse_url(trim($url));
0 голосов
/ 15 ноября 2011
preg_match("/<a\shref\=\"(.*)\"/",$content,$matches);

$ match - это массив со всеми совпадениями в регулярном выражении для поиска ссылок.каждая группа захвата является индексом в $ match.

обратите внимание, что ваши <a> теги не закрыты.Если они были закрыты, вы также можете извлечь текст из ссылок:

preg_match("/<a\shref\=\"(.*)\">(.*)<\/a>/",$content,$matches);

Регулярное выражение, которое я использовал, не является водонепроницаемым.Он основан на использовании двойных кавычек и ожидает, что href будет последним атрибутом в теге <a>.Вы можете найти оптимизированные регулярные выражения в онлайн-библиотеках, таких как http://regexlib.com

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