Помогите с регулярным выражением

D
На сайте с 02.02.2010
Offline
149
826

Здравствуйте. Прошу помощи.

есть код

<?php
$a = parse_url("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
$str = "http://".$a['host'].$a['path'];
preg_match_all("|city/(.*)/|U", $str, $res);
print $res[1][0];
?>

он из урл вида http://site.com/cat/vse-dlja-dachi/city/sochi/ выпаршивает "sochi", а как переделать так чтобы из этого урл получить "vse-dlja-dachi", то есть нужно в обратную сторону от /city/ вытащить часть урл до первого слеша

например из http://site.com/cat/uslugi/city/sochi/ получить "uslugi"

из http://site.com/cat/vse-dlja-dachi/nabory-dlja-piknika/city/sochi/ получить "nabory-dlja-piknika"

rammlied
На сайте с 13.04.2011
Offline
56
#1

используйте обычный сплит по слешу и ищите что после city, а что перед.

делаю СДЛы, получаются ГСы )
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#2

зачем вам регулярка?

Через обычную функцию exploid по /

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
D
На сайте с 02.02.2010
Offline
149
#3
rammlied:
используйте обычный сплит по слешу и ищите что после city, а что перед.

Не знаю что вы имеете ввиду, я просто не разбираюсь. Я уже неделю ищу как сделать, надоело и решил на форуме спросить

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#4
divv:
Не знаю что вы имеете ввиду, я просто не разбираюсь. Я уже неделю ищу как сделать, надоело уже и решил на форуме спросить

Вам сюда: http://php.net//manual/ru/function.explode.php

Неделю вы ищите... 🤪

siv1987
На сайте с 02.04.2009
Offline
427
#5

preg_match("|/([^/]+)/city/|U", $str, $res);

D
На сайте с 02.02.2010
Offline
149
#6

Всем спасибо

вот так работает

preg_match_all("/^.*\/(.+)\/city/", $str, $res);
siv1987
На сайте с 02.04.2009
Offline
427
#7
divv:
вот так работает

Вот нахрена писать так, когда вам написали более оптимальное выражение? Используйте лучше explode.

Злобный Гыук
На сайте с 30.08.2007
Offline
83
#8
siv1987:
Вот нахрена писать так, когда вам написали более оптимальное выражение? Используйте лучше explode.

Чем же explode оптимальнее регулярки?

SEO-api для программистов (/ru/forum/869285)
siv1987
На сайте с 02.04.2009
Offline
427
#9

Оптимальнее preg_match vs preg_match_all и первый regexp, а чем писать г-выражения лучше использовать explode.

D3
На сайте с 12.11.2011
Offline
51
#10

Помогу: http://www.regexr.com/

Красивое женское нижнее белье. http://designer-lingerie.ru/ (http://designer-lingerie.ru/)

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