Помогите разбить URL

Статус
Закрыто для дальнейших ответов.

asherik

Новичок
Регистрация
16.08.2016
Сообщения
2
Здравствуйте, необходимо разбить url вида http://site.ru/categoriya/categoriya/categoriya/product

Нужно получить переменные

$categoriya = 'categoriya';

$n = '3'; - это сколько раз повторилась /categoriya/

категория имеет одинаковое значение (просто дублируется в ссылке), но может меняться на других товарах сайта, то есть длина изменяется.

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

http://site.ru/categoriya/product

Очень надеюсь на вас, помогите пожалуйста с разбивкой юрл на переменные, остальное сам умею
 

miketomlin

Well-Known Member
Регистрация
12.11.2013
Сообщения
101
Как вариант, explode+array_unique. Или preg_* функции.

А как получилось, что возникли такие дубли? Надо бы сделать так, чтобы они вообще больше не появлялись.
 

asherik

Новичок
Регистрация
16.08.2016
Сообщения
2
Нашел один вариант решения

<?php

$url = 'http://test.ru/sportivnaya_odejda/sportivnaya_odejda/razmi_lij_kostumi/razminochniy-lyzhniy-kostum-002-krasniy-13';

$url = preg_replace('/(\b[\pL0-9]++\b)(?=.*?\1)/siu', '', $url);
echo $url;

?>

а так работает (где в качестве разделителя слов категории не используется нижний пробел "_")
Код:
<?php

$url = 'http://test.ru/sportivnayaodejda/sportivnayaodejda/razmi_lij_kostumi/razminochniy-lyzhniy-kostum-002-krasniy-13';

$url = preg_replace('/(\b[\pL0-9]++\b)(?=.*?\1)/siu', '', $url);
echo $url;
?>
Как бы сделать чтобы и нижний пробел учитывался?

miketomlin сказал(а):
Как вариант, explode+array_unique. Или preg_* функции.

А как получилось, что возникли такие дубли? Надо бы сделать так, чтобы они вообще больше не появлялись.
дубли в опенкарт не знаю уже как и бороться, но дубли будут если вручную вбить категории дополнительно
 
Статус
Закрыто для дальнейших ответов.
Верх Низ