Эта тема на forum.dklab.ru


solyr: Парсинг (url из href)
Имеется переменная с данными в которой имееются ссылки на страницы. Нужно из этой переменной выдернуть все url начинающиеся с href.
Унифицировать до максимума, учитывать что симовл пребела, табуляции или новой строки может оказаться в любом ей положеном месте.

У меня вот так в формате PCRE: $reg_expr = '(href)(\s*)(=)(\s*)(\S*)(\s*)([>])'; Выражение не унифицировано до конца. Если url содержит пробельные символы то как быть? Пробельные при работе в браузере кодируются но в исходной парсирующейся переменной они могут быть в обычном пердставлении, например при пересылке параметра со значением строка index.php?f=" asdsad ada". Как после нахождения элемента выделить чистый url без href= и >

Специалисты по регулярным выражениям помогите.
Maus:
Если url содержит пробельные символы то как быть?
Вообще говоря, такой URL некорректен.
Если же на корректность забить, то

// мне лишние карманы не нужны. Надо - сами расставьте обратно, но не забудьте пересчитать обратные ссылки
$pattern = '/href\s*=\s*((([^\'"][^\s>]*)[\s>])|(([\'"])([^\5]*)\5))/is';

результат - либо в третьем, либо в шестом кармане.
при href="" оба кармана пусты
href=> не ловится паттерном вообще (можно, думаю, как третью альтернативу поставить).
Если делать разными регами (то есть несколько прогонов) - то они будут проще.
И ещё: я не дружу с одноразовыми (once-only) подшаблонами
Anonymous:
Спасибо. Работает вроде бы нормально )

Эта тема на forum.dklab.ru