Madgod
@Madgod

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

Есть страница с определенным щаблоном.

На этой странице, в зависимости от get параметров, по api приходят такие данные:
vendor = "MERCEDES BENZ"
model = "C CLASS ALL-TERRAIN"

Т.е. урл выглядит так:
/auc-online/?vendor=MERCEDES BENZ&model=C CLASS ALL-TERRAIN

Чтоб сделать нормальный урл, я через add_rewrite_rule, делаю нужную мне струткуру, в итоге получается:
add_rewrite_rule('^(auc-online)/([^/]+)/([^/]+)/?', 'index.php?pagename=$matches[1]&vendor=$matches[2]&model=$matches[3]', 'top');


/auc-online/mercedes benz/c class all-terrain/

Теперь нужно избавиться от пробелов, чтоб урл выглядел так:
/auc-online/mercedes-benz/c-class-all-terrain/

Я делаю как-то так:
str_replace(' ', '- ', $string)

Всё работает, но тогда менются get параметры, а они мне нужны для запроса к api. Т.е. мне нужно преобразовать всё в обратном порядке, заменить дефисы на пробелы. Но если я заменю все дефисы, то производители и модели которые имели изначально дефис в своем имени я не смогу получить. Т.е. мне нужно заменить только те дефисы которых небыло изначально.

Я сделал немного по другому. Сначала меняю пробелы на ‐ Вот так:
str_replace(' ', '‐', $string);

Затем делаю всё наоборот:
str_replace('%E2%80%90', ' ', $string);

И в целом это работает, в браузере урл отображается как положено. Но если скопировать такой урл, то выглядит он естественно со всеми этими символами:
/auc-online/mercedes%E2%80%90benz/c%E2%80%90class%E2%80%90all-terrain/

Можно что-то с этим сделать?
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Заменяйте пробел на плюс
Причем лучше это делать не косолапыми ручками, а через urlencode() каждого отдельного параметра
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы