Zend Framework кодирование пространства URI в PHP и Javascript - PullRequest
1 голос
/ 24 декабря 2009

У меня есть Zend Framework URI, такой как / controller / action / var1 / value1 / var2 / value2.

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

  2. Это значение2 также добавляется в местоположение href с помощью javascript на стороне клиента. Я использую функцию escape там, но когда я нажимаю ссылку, я не вижу ни «+», ни «% 20f» в адресной строке Firefox. Хотя, когда я вижу это на вкладке 'net' firebug, я вижу% 20f.

Какие функции мне следует использовать в PHP и javascript?

1 Ответ

2 голосов
/ 24 декабря 2009

По поводу вашего первого вопроса, это разница между 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

Когда я нажимаю клавишу enter , она автоматически переводится на

http://tests/temp/temp.php?a=hello%2C%20world

Если это работает так, как вы делаете (и, поскольку вы видите закодированный URL с Firebug, возможно, оно работает) , все в порядке; -)

...