Кодирование пространства URI Zend Framework в PHP и Javascript

StackOverflow https://stackoverflow.com/questions/1958644

  •  21-09-2019
  •  | 
  •  

Вопрос

У меня есть URI Zend Framework, например /controller/action/var1/value1/var2/value2 .

  1. Значение2 содержит пробел.Как мне закодировать это в PHP?Когда я использую urlencode со значением2, это преобразует пробел в «+» вместо «%20f».Это нормально?

  2. Это значение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, он, вероятно, работает), все хорошо ;-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top