Что нового

Извлечение ссылок из страницы HTML

mef-t

Осваивающий
Сообщения
306
Репутация
30
Добрый день.

Ранее мне подсказали рег. выражение для извлечения ссылок.
Код:
$sRet = StringRegExp($vTest, 'href\s*=\s*([''"])?([^\1\s]+?)(?:\1|>)', 3)


На текущий момент данное выражение закреплено в теме Частоиспользуемые выражения / шаблоны

Данное рег.выражение работает правильно, но выдает лишние значения, такие как апостроф и двойная кавычка.
На просторах рунета нашел другое выражение, совместил с указанным выше и получилось следующее
Код:
$sRet = StringRegExp($vTest, '<a[^>]*href\s*=\s*[''"]?((?:.(?![''"]?\s+(?:\S+)=|[>''"]))+.)[''"]?', 3)


Одинарные кавычки ушли, но иногда проскакивают не правильно отработанные ссылки.
Пример:
Код:
<a class=123  href = /o-veb-studii >О веб-студии</a>
<a href='/' class="logo hideTxt">logo</a>

Данный пример для второй ссылки выведет 1 => '/
А должен вывести 1 => /

Просьба помочь поправить выражение
 
Автор
mef-t

mef-t

Осваивающий
Сообщения
306
Репутация
30
Код:
$sRet = StringRegExp($vTest, '<a[^>]*href\s*=\s*[''"]?((?:.(?![''"]?\s+(?:\S+)=|[>''"]))*.)[''"]?', 3)

Осталось убрать пробелы перед закрывающейся кавычкой


Добавлено:
Сообщение автоматически объединено:

Вроде получилось.
Код:
$sRet = StringRegExp($vTest, '<a[^>]*href\s*=\s*[''"]?\s*((?:.(?![''"]?\s+(?:\S+)=|[>''"]))*\S)[''"]?', 3)


Просьба проверить.

OffTopic:
Претендую на замену текущего шаблона на мой
 
Верх