[Проблема] Регулярные выражения

12
TAFF
На сайте с 28.08.2008
Offline
140
918

Есть список ссылок, вида:

http://site.ru//market/uslugi//param/случайное_слово/

Домены разные

Неообходимо оставить только:

http://site.ru//market/uslugi//param/случайное_слово/

То есть должно стать таким:

http://site.ru/param/случайное_слово/

Примечание: /market/uslugi/ - тут случайное количество символов и знаков "/" в том числе идущих подрят "//"

Ps: "_" поставил для удобства (двиг парсит как ссылку)

✓ Администрирование (/ru/forum/494299) | ✓ Домены (/ru/forum/298049) | ✓ Продажа аккаунтов narod.ru (/ru/forum/585347)
ewg777
На сайте с 04.06.2007
Offline
225
#1

$url = preg_replace ("/\/+/",'/', $_SERVER['REQUEST_URI']);
Trafikgon
На сайте с 24.10.2008
Offline
174
#2

О враг мой вы тут?

. (#)
ewg777
На сайте с 04.06.2007
Offline
225
#3
Trafikgon:
О враг мой вы тут?

Что нужно Вам, планктон невиданный?

TAFF
На сайте с 28.08.2008
Offline
140
#4

ewg777, Работаю через NotePad++

KF
На сайте с 06.10.2007
Offline
40
#5


$url = preg_replace('%(?<!:)//(.+)//%i', '/', $url);

Насчет notepad не знаю, но врядли в нем поддерживается такая конструкция

(?<!:)

Поэтому проще сделать так

заменить сначала обычным поиском

http:// за какую-нить фигню типо http|||

потом регуляркой заменить //(.+)// на /

затем заменить http||| на http://

TAFF
На сайте с 28.08.2008
Offline
140
#6

ewg777, Нужно убрать всё от первого слеша ("/") то есть как то не считать первые два, до

TAFF:
/param/

TAFF добавил 20.10.2009 в 18:31

KeFiR, Есть решения не на php? по типу таких нужно

DI
На сайте с 03.01.2007
Offline
123
#7

preg_match_all(#(\/param\/.*?\/)#is,$string,$result);

в $result имеем все /param/bla-bla-bla/, ну а http://site.ru можно и руками подставить, оно же постоянно.

PS: в Notepad++ не работает жадность, кажется.

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
TAFF
На сайте с 28.08.2008
Offline
140
#8

DenIT, Домены разные

KF
На сайте с 06.10.2007
Offline
40
#9

Вот кстати еще один способ, без замены http://

Меняем

//([^/]+)/([^/]+)//
на
/
S
На сайте с 13.07.2007
Offline
56
#10

Эммм, вроде как

s/(http:\/\/*.?\/)(.*)(\/param\/.*?)/$1$3/gi
12

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