Правильная обработка "+" в GET-запросе?

Проект сделан на PHP.

Есть ссылка вида server.com/index.php?email=name%2Bsolt@server.com

Переход по такой ссылке ведёт к тому, что браузер (Firefox) преобразует %2B в "+".

Далее на сервер приходит GET-запрос в PHP как «name solt@server.com».

Т. е. браузер, сервер или PHP воспринимают символ "+" как пробел.

Мне надо иметь в переменной GET значение «name+solt@server.com», а не «name solt@server.com».

Можно, конечно, заменять пробел на "+" уже в коде, но может быть есть более корректное решение данной проблемы?
  • Вопрос задан
  • 6800 просмотров
Пригласить эксперта
Ответы на вопрос 5
Troytft
@Troytft
encodeURIComponent(text)
Ответ написан
@temaHT
А вы уверены что это браузер преобразует? По идее если действительно такая ссылка, то в скрипт как раз должно приходить name+solt@server.com. Возможно что у вас где то на этапе формирования ссылки, происходит неверная операция.
Ответ написан
Fedcomp
@Fedcomp
У меня была такая проблема с mod_rewrite у apache. Решилось двойным экранированием url_encode() (и двойным раскодированием соответственно)
Ответ написан
Комментировать
taliban
@taliban
php программист
$_SERVER['REQUEST_URI'] что там находится? может у Вас там хитрый фильтр стоит
Ответ написан
Вот предлагают решения для этого: www.dracos.co.uk/code/apache-rewrite-problem/

Ещё можно попробовать flag b, но, насколько я понял, будет обратная ситуация — пробел будет превращаться в '+'.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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