Кодирование пространства URI Zend Framework в PHP и Javascript
-
21-09-2019 - |
Вопрос
У меня есть URI Zend Framework, например /controller/action/var1/value1/var2/value2 .
Значение2 содержит пробел.Как мне закодировать это в PHP?Когда я использую urlencode со значением2, это преобразует пробел в «+» вместо «%20f».Это нормально?
Это значение2 также добавляется в местоположение href с помощью javascript на стороне клиента.Я использую там escape-функцию, но когда я нажимаю ссылку, я не вижу ни «+», ни «%20f» в адресной строке Firefox.Хотя когда я вижу это на вкладке «net» Firebug, я вижу %20f.
Какие функции следует использовать в PHP и JavaScript?
Решение
Что касается вашего первого вопроса, в этом разница между urlencode
и rawurlencode
:
var_dump(urlencode("hello, world"));
Вы получите:
string 'hello%2C+world' (length=14)
Пока
var_dump(rawurlencode("hello, world"));
принесу тебе:
string 'hello%2C%20world' (length=16)
Я полагаю, что с обоими все будет в порядке;но не стесняйтесь попробовать, на всякий случай ;-)
По поводу второго пункта:Firefox пытается сделать URL-адреса «красивее», отображая их в удобочитаемом виде, а не в закодированном виде — что плохо для нас, разработчиков, но приятно для конечных пользователей.
Например, если я введу этот URL-адрес в адресную строку Firefox:
http://tests/temp/temp.php?a=hello%2C%20world
Когда я нажимаю кнопку входить ключ, он автоматически переводится на
http://tests/temp/temp.php?a=hello%2C%20world
Если это работает так, как вы это делаете (и, поскольку вы видите закодированный URL-адрес с помощью Firebug, он, вероятно, работает), все хорошо ;-)