 |
(PHP
3, PHP 4) urlencode - URL-кодирует строку. Описаниеstring
urlencode (string str) Возвращает строку, в которой все не алфавитно-числовые
символы (кроме -_.) заменены на знак процентов (%) с последующими двумя
16-ричными цифрами и пробелами, кодированными как знаки плюс (+). Она
кодируется тем же способом, что и post данные WWW-формы, то есть как в типе носителя
application/x-www-form-urlencoded. Это отличается от RFC1738-кодирования
(см. rawurlencode()) тем, что, по историческим
соображениям, пробелы кодируются как плюсы (+). Эта функция удобна при кодировании
строки для использования в части запроса URL для передачи переменных на следующую
страницу: Пример
1. urlencode()
echo '<a href="mycgi?foo=', urlencode($userinput), '">'; |
|
Примечание:
будьте внимательны с переменными, которые могут совпасть с элементами HTML. Мнемоники
вроде &, © и £ разбираются браузером и используется реальная
мнемоника, а не желаемое имся переменной. Эта склока с W3C, которая тянется годами.
Вот ссылка: http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2
PHP поддерживает изменение сепаратора аргументов на рекомендуемый W3C символ
точка с запятой вместо .ini-директивы arg_separator. К сожалению, большинство
пользовательских агентов не отправляют данные формы в формате с разделением точкой
с запятой. Более переносимый способ - использовать & вместо & в качестве
сепаратора. Вам не надо для этого изменять arg_separator РНР. Оставьте его как
&, но просто кодируйте ваши URLs с помощью htmlentities()(urlencode($data)).
Пример 2. urlencode/htmlentities()
echo '<a href="mycgi?foo=', htmlentities(urlencode($userinput)),
'">'; | | См. также urldecode(),
htmlentities(), rawurldecode(),
rawurlencode(). |  |