Регулярные выражения

Mishin Oleg

Новичок
Регулярные выражения

Задача: при парсировке текста необходимо заменить все относительные URL на странице на полные, зная домен и весь остальной путь ($url_nblock).

Решение:
Делаю так:
PHP:
$text=preg_replace('/^a href=["]?[http:\/\/]{0}([\w]+)["]?$/','a href="'.$url_nblock.'\0',$text);
Пробуем:
на входе <a href="Unlimited">
на выходе <a href="Unlimited">

Почему не берет? Только начинаю работать с regexp, доки прочитал но практики пока нет.

В чем ошибка, или хотябы правильный вариант - суть сам разберу?
 

Mishin Oleg

Новичок
а если чуть подумать...
PHP:
 $text=preg_replace('|<a([^>]+)href=["]?[http:\/\/]{0}(.+?)"|','<a$1href="'.$url_nblock.'$2"',$text);
и все сработало. Спасибо =)
 

Mishin Oleg

Новичок
нет "http://" Что-то не так?

Ведь мне нужны только относительные URL а не все
 

WP

^_^
[http:\/\/]{0}
Совершенно ничего не означает. Что есть эта подстрока - что нет. Твой кривой кусок объявляет символьный класс 'htp:/' длиной 0, т.е. ничего. То что тебе нужно - условная подмаска: (?!http:\/\/)
 

sage

Новичок
Mishin Oleg
WP
для чего вы оба строите забор из \ и /? в данном случае можно обойтись без \
 

WP

^_^
Я всегда использую ограничитель '~', и забор не строю =) Но человек ведь выбрал /.
 
Сверху