urlencode
(PHP 4, PHP 5, PHP 7)
urlencode — URL-кодирование строки
Описание
$string
) : stringЭта функция удобна, когда закодированная строка будет использоваться в запросе, как часть URL, в качестве удобного способа передачи переменных на следующую страницу.
Список параметров
-
string
-
Строка, которая должна быть закодирована.
Возвращаемые значения
Возвращает строку, в которой все не цифро-буквенные символы, кроме -_.
должны быть заменены знаком процента (%
), за которым следует
два шестнадцатеричных числа, а пробелы закодированы как знак
сложения (+
).
Строка кодируется тем же способом, что и POST-данные веб-формы, то есть по
типу контента 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 файле. К сожалению, большинство пользовательских приложений не отправляют данные формы в формате с разделителем "точка с запятой". Более переносимый способ решить эту проблему - это использовать & вместо & в качестве разделителя. Вам не нужно будет для этого изменять PHP-директиву arg_separator. Оставьте разделитель как &, но кодируйте ваши URL с помощью htmlentities() или htmlspecialchars().
Смотрите также
- urldecode() - Декодирование URL-кодированной строки
- htmlentities() - Преобразует все возможные символы в соответствующие HTML-сущности
- rawurlencode() - URL-кодирование строки согласно RFC 3986
- rawurldecode() - Декодирование URL-кодированной строки
- » RFC 3986