IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Регулярные выражения (http://www.imho.ws/showthread.php?t=74770)

_ARMAGEDDON_ 01.12.2004 13:40

Регулярные выражения
 
Каким регулярным выражением выдрать ссылку со странички
<a href=http://yandex.com>yandex.com</a>

нужно получить http://yandex.com , еще нужно учесть если ссылка будет в кавычках..

Ghost 01.12.2004 13:50

_ARMAGEDDON_
Если на перле и подразумевается, что линк не содержит пробелов, то вот:
Код:

$s =~ s/(.*)(<a)([^>]*)(href=)([^ >]*)(.*)/$5/i;
$s =~ s/"//g;


_ARMAGEDDON_ 01.12.2004 14:36

на PHP

_ARMAGEDDON_ 01.12.2004 18:20

кое чего нашел <a\s+href=(\"|'|)([^\1]*?)\\1>
но если после ссылки идет class или target или еще чтонить то php захватывает все это с собой... что надо изменить в этом регулярном выражении?

Hubbitus 01.12.2004 19:44

#\<a[^\>]+\>(.*)</a>#i

_ARMAGEDDON_ 02.12.2004 11:08

$regvar="#\<a[^\>]+\>(.*)</a>#i";
preg_match_all("/".$regvar."/is",$result,$array);

Warning: Unknown modifier 'a' in .....mod\main.php on line 26

is_absent 02.12.2004 12:53

$regvar="#\<a[^\>]+\>(.*)</a>#is";
preg_match_all($regvar,$result,$array);
вот так :)

_ARMAGEDDON_ 02.12.2004 14:21

всеравно не то...

$regvar="!<a.*?href=\"?'?([^ \"'>]+)\"?'?.*?>(.*?)</a>!is";
вот это почти то что надо... только названия ссылок тоже выбираются.. что тут изменить чтобы выдиралась токо сама ссылка? :)

Hubbitus 02.12.2004 15:07

Цитата:

_ARMAGEDDON_:
всеравно не то...
Что именно не то? Поставленную задачу из первого поста решает, если нужно что-то другое - опиши конкретнее чего нужно.

_ARMAGEDDON_ 02.12.2004 15:23

нужно выдрать ссылку со странички (без названия)
последнее регулярное выражение почти справляется но за собой еще и название ссылки захватывает
а мне нужен только адрес

нужно еще учесть если ссылка в кавычках, если после ссылки идет class.. target и т.д.

#\<a[^\>]+\>(.*)</a>#i - c этой задачей не справляется

Hubbitus 02.12.2004 17:03

Я просто не правильно прочитал что требуется, решил что именно текст ссылки нужно, :) , прошу прощения.

Тогда так:
#\<a.*?href=(?>[\"\'])?([^\s\>\'\"]+)(?>[\"\'])?.*>#i

_ARMAGEDDON_ 02.12.2004 17:12

спасибо! все работает


Часовой пояс GMT +4, время: 12:15.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.