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