Заменить ‘ ‘ в URL текущей страницы на ‘+’ или пробел

#php

#php

Вопрос:

У меня есть URL, сгенерированный с помощью отправки формы с переданными переменными. Я не буду вдаваться в подробности, но ‘ ’ в URL-адресе нарушает работу системы, поэтому я хотел бы заменить его на ‘+’.

Однако все методы, которые я пробовал до сих пор, не сработали. Я пробовал различные методы декодирования PHP URL, но ни один из них не работает, поскольку они заменяют другие символы в URL, что снова нарушает его.

URL выглядит следующим образом:

 www.domain.com/catalog/search.php?sort_by=relevanceamp;some_filter%5B%5D=filter term
  

Я также пытался получить URL текущей страницы и с помощью str_ireplace заменить символы ‘ ’ обычными пробелами или ‘+’, все безрезультатно.

Я был бы признателен за любую помощь!
Спасибо

Комментарии:

1. urlencode ; в зависимости от того, как и где вы генерируете URL.

2. используете ли вы что-то вроде codeigniter?

3. Звучит как ужасная система, если сломает ее…

4. исправьте систему для работы с любыми символами в URL, иначе у вас есть потенциальная дыра в безопасности или, по крайней мере, общедоступный способ взлома вашей системы

5. @ignacio — по умолчанию codeigniter (и, возможно, другие фреймворки) по какой-либо причине запрещает в URI. Вы можете разрешить это довольно легко, настроив файл конфигурации, поэтому я спросил OP, используют ли они CI. В целом я согласен с вами, потому что все, кто создает нормальную поисковую утилиту, будут использовать GET, и будет там, поэтому установка по умолчанию не выполняется. Но это легко исправить, если OP вообще использует CI.

Ответ №1:

Если вы используете php, попробуйте urlencode() и urldecode()

http://www.php.net/manual/en/function .urlencode.php

Это избавит вас от головной боли при замене символов (которые затем заменяются).

Вот более полный пример, близкий к вашему варианту использования.

 <?php

$foo = str_replace(' ','+', 'www.domain.com/catalog/search.php?sort_by=relevanceamp;some_filter[]=filter term');

echo urldecode($foo);
  

Комментарии:

1. «Если вы используете php, попробуйте urlencode () и urldecode ()» — я думаю, это понятно 😉

2. Спасибо, я попробую.

3. Не могу заставить это работать — действие формы установлено на www.domain.com/catalog/search.php?start=0 , а остальная часть URL генерируется с помощью переданных переменных. Использование urldecode() этого URL не помогает. Что мне нужно, так это эффективно использовать эту функцию для ‘текущего URL’, чтобы ее можно было адаптировать. Спасибо

4. Поэтому, когда форма отправляется в www.domain.com/catalog/search.php?start=0amp;sort_by=relevanceamp;some_filter[]=filter term что происходит?

5. В search.php возможно, попробуйте urldecode для параметра. urldecode($_GET[‘some_filter’]); например