![]() |
Регулярные выражения
Каким регулярным выражением выдрать ссылку со странички
<a href=http://yandex.com>yandex.com</a> нужно получить http://yandex.com , еще нужно учесть если ссылка будет в кавычках.. |
_ARMAGEDDON_
Если на перле и подразумевается, что линк не содержит пробелов, то вот: Код:
$s =~ s/(.*)(<a)([^>]*)(href=)([^ >]*)(.*)/$5/i; |
на PHP
|
кое чего нашел <a\s+href=(\"|'|)([^\1]*?)\\1>
но если после ссылки идет class или target или еще чтонить то php захватывает все это с собой... что надо изменить в этом регулярном выражении? |
#\<a[^\>]+\>(.*)</a>#i
|
$regvar="#\<a[^\>]+\>(.*)</a>#i";
preg_match_all("/".$regvar."/is",$result,$array); Warning: Unknown modifier 'a' in .....mod\main.php on line 26 |
$regvar="#\<a[^\>]+\>(.*)</a>#is";
preg_match_all($regvar,$result,$array); вот так :) |
всеравно не то...
$regvar="!<a.*?href=\"?'?([^ \"'>]+)\"?'?.*?>(.*?)</a>!is"; вот это почти то что надо... только названия ссылок тоже выбираются.. что тут изменить чтобы выдиралась токо сама ссылка? :) |
Цитата:
|
нужно выдрать ссылку со странички (без названия)
последнее регулярное выражение почти справляется но за собой еще и название ссылки захватывает а мне нужен только адрес нужно еще учесть если ссылка в кавычках, если после ссылки идет class.. target и т.д. #\<a[^\>]+\>(.*)</a>#i - c этой задачей не справляется |
Я просто не правильно прочитал что требуется, решил что именно текст ссылки нужно, :) , прошу прощения.
Тогда так: #\<a.*?href=(?>[\"\'])?([^\s\>\'\"]+)(?>[\"\'])?.*>#i |
спасибо! все работает
|
| Часовой пояс GMT +4, время: 12:15. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.