Обрезать URLы регексом

LX
На сайте с 11.06.2007
Offline
28
464

Доброго!

Подскажите пожалуйста как решить следующую задачу:

Имеется некий набор ссылок:

http://sait/folder/page?.i=a&b=bb&url=http%3a%2f%2fsite2.ru%2ffile%2ffile%3b_ylt%3dA0WTcZFqQMpIDDsBqwzpy6IX%3b_ylv%3d3%3fqid%3d20080912030502AARPZaf

./f.php?http://sait/folder/page?.i=a&b=bb&url=http%3a%2f%2freplace.ru%2ffile%2ffile%3b_ylt%3dA0WTcZFqQMpIDDsBqwzpy6IX%3b_ylv%3d3%3fqid%3d20080912030502AARPZaf
./f.php?http://sait/folder/page?.i=a&b=bb&url=http%3a%2f%2frplace2.ru%2ffile%2ffile%3b_ylt%3dA0WTcZFqQMpIDDsBqwzpy6IX%3b_ylv%3d3%3fqid%3d20080912030502AARPZaf
http://sait/folder/page?.i=a&b=bb&url=http%3a%2f%2fsite3.ru%2ffile%2ffile%3b_ylt%3dA0WTcZFqQMpIDDsBqwzpy6IX%3b_ylv%3d3%3fqid%3d20080912030502AARPZaf
http://sait/folder/page?.i=a&b=bb&url=http%3a%2f%2fsite4.ru%2ffile%2ffile%3b_ylt%3dA0WTcZFqQMpIDDsBqwzpy6IX%3b_ylv%3d3%3fqid%3d20080912030502AARPZaf

Как с помощью preg_replace удалить все до url= у урлов, в начале которых нет ./f.php?, т.е. получить

http%3a%2f%2fsite2.ru%2ffile%2ffile%3b_ylt%3dA0WTcZFqQMpIDDsBqwzpy6IX%3b_ylv%3d3%3fqid%3d20080912030502AARPZaf

Пробую это выполнить следующим кодом:

$txt=preg_replace("/(?<!f\.php)\?http:\/\/.*url\=(http.*?<)/",rawurldecode("\\1"),$txt);

Однако результата нет (абсолютно никакого).

Ѣ-программисты пишут на Petrovich (http://2lx.ru/2009/05/yazyk-programmirovaniya-petrovich/) и Ook! (http://2lx.ru/2009/06/yazyk-programmirovaniya-ook/) Нечего кушать? Подои Зорьку (http://zorkabiz.ru/?zorka=1071)! Мууу...
grey109
На сайте с 15.06.2005
Offline
180
#1

Так?

$txt = rawurldecode (preg_replace("/^(\.\/f\.php\?)?http:\/\/.*?url=(http.*?)/is", "\\2", $txt));

LX
На сайте с 11.06.2007
Offline
28
#2

Да, именно так.

Спасибо огромное!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий