Обрезать часть URL в начале

147
29 марта 2022, 08:10

Есть ссылка https://site.com/ru/moskov/baby/andyushak-evgeniya-petrovna

Нужно ее обрезать чтобы получить baby/andyushak-evgeniya-petrovnа..

Посоветовали вариант

substr(substr($_SERVER['REQUEST_URI'], 1), strpos(substr($_SERVER['REQUEST_URI'], 1), '/') + 1)

он работает, но убирает только https://site.com/ru/

а нужно и после второго слеша убирать

Answer 1

Если сайт один и тот же и города не меняются (все время речь идет про Москву), то вот так:

$url = "https://site.com/ru/moskov/baby/andyushak-evgeniya-petrovna";
$url = str_replace("https://site.com/ru/moskov/", "", $url);

Этот код просто уберет из ваших ссылок "https://site.com/ru/moskov/" (соответственно вам нужно заменить на своё).

результат: baby/andyushak-evgeniya-petrovna

Если же города меняются и меняются языки, но структура остается такой же, то вот регулярное выражение, которое вырежет вам этот кусок. А именно уберет из ссылки сначала домен http://site.ru/ (как http, так и https) и затем два "контейнера" между слешами. Первый - языковой (/ru/), второй - город (/moskov/).

Данные в них могут меняться, например язык на /en/ а город на /london/.

(https?|http):\/\/\S*?\.\S*?\/\S*?\/\S*?\/

Я в регулярных выражениях на данный момент мягко говоря плаваю, и уверен что от идеала эта регулярное выражение сильно далеко, но с вашей задачей справится.

$url = "https://site.com/ru/moskov/baby/andyushak-evgeniya-petrovna";
$url = preg_replace('#(https?|http):\/\/\S*?\.\S*?\/\S*?\/\S*?\/#', "", $url);

результат: baby/andyushak-evgeniya-petrovna

Answer 2

получить baby/andyushak-evgeniya-petrovnа

Если структура URL не меняется, тогда можно обойтись и без регулярных выражений:

  1. разбить URL на массив
  2. взять необходимый срез массива
  3. преобразовать результирующий массив в строку
$str = 'https://site.com/ru/moskov/baby/andyushak-evgeniya-petrovna';
$str = join('/', array_slice(explode('/', $str), 5));
echo $str;

Результат

READ ALSO
Как быстро сделать портфолио

Как быстро сделать портфолио

Как в кратчайшие сроки сделать портфолио? Имеется опыт в разработке под PHP 3 года, laravel - 05 года

110
Laravel + VueJS .slice is not a function

Laravel + VueJS .slice is not a function

Вообщем есть приложение Laravel + VueJS на одной странице, точнее на нескольких страницах есть пагинация сделанная таким образом:

89
Отследить перезагрузку страницы

Отследить перезагрузку страницы

Как можно отследить перезагрузку страницы? Просто нажатие f5 - это отловить событием keyupА как, к примеру, если нажмут на перезагрузку страницы...

92
Как отследить input jquery autocomplete?

Как отследить input jquery autocomplete?

Ситуация заключается в следующемЕсть поисковая строка с автозаполнением значений

137