[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения
daemon2010
Есть строка такого типа:
<a class="Page" href="index.php?pg=1">1</a><span class="PageSep"> · </span><a class="Page" href="index.php?pg=2">2</a>


Необходимо из нее выбрать только url'ы

сейчас пытаюсь использовать такое выражение:
preg_match_all("^<a class=\"Page\" href=\"(.*)\">(.*)</a>^",$string,$matches);


но в итоговом массиве получается вся строка. Может пожалуйста кто-то помочь разобраться.

Спасибо



Спустя 7 минут, 26 секунд (27.04.2010 - 21:49) ApuktaChehov написал(а):
В регулярных выражениях слаб, но по моему можно так:
'/<a.+<\/a>/i'


Если я правильно понял задачу.

Спустя 3 минуты, 53 секунды (27.04.2010 - 21:53) Winston написал(а):
А так ?
preg_match_all ("/(<a [^>]>\w+<\/[^>]>)/i", $string, $matches);

Да сорри.

Спустя 1 минута, 8 секунд (27.04.2010 - 21:54) ApuktaChehov написал(а):
Цитата (PHPprogramer @ 27.04.2010 - 21:53)
А так ?
preg_match_all ("/^(<a[^>]>\w+<\/[^>]>)$/i", $string, $matches);

А если ссылка не в начале строки? И ею строка не кончается?

Спустя 4 минуты, 50 секунд (27.04.2010 - 21:59) daemon2010 написал(а):
Цитата (ApuktaChehov @ 27.04.2010 - 18:49)
В регулярных выражениях слаб, но по моему можно так:
'/<a.+<\/a>/i'


Если я правильно понял задачу.

Спасибо но мне необходимо выбирать только адреса из href, а ваше выражение точно также как и мое выхватывает строку полностью от начально тега <a> и до последнего, то есть в итоговом массиве получается вся входящая строка.

Спустя 2 минуты, 8 секунд (27.04.2010 - 22:01) Winston написал(а):
А так ?
preg_match_all ("/\bhref=\"(.*)\"/i", $string, $matches);

Спустя 7 минут, 6 секунд (27.04.2010 - 22:08) daemon2010 написал(а):
Цитата (PHPprogramer @ 27.04.2010 - 19:01)
А так ?
preg_match_all ("/\bhref=\"(.*)\"/i", $string, $matches);

Полный код скриптика:

$html ='<a class="Page" href="index.php?pg=1">1</a><span class="PageSep"> · </span><a class="Page" href="index.php?pg=2">2</a>';
if(preg_match_all("/\bhref=\"(.*)\"\b/i",$html,$data)){
echo '<pre>';
print_r($data);
echo '</pre>';

Спустя 13 минут, 45 секунд (27.04.2010 - 22:22) daemon2010 написал(а):
Все проблема снимается, разобрался. Добавил знаки вопроса в изначальное регулярное выражение и все заработало как надо:

^<a class="Page" href="(.*?)">(.*?)</a>^
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.