#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’]); например