urlencode

(PHP 4, PHP 5, PHP 7)

urlencodeURL-кодирование строки

Описание

urlencode ( string $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. Такие сущности как &amp, &copy и &pound разбираются браузером и используется как реальная сущность, а не желаемое имя переменной. Это очевидный конфликт, на который W3C указывает в течение многих лет. См. подробности: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2

PHP поддерживает изменение разделителя аргументов на рекомендуемый W3C символ "точку с запятой" путём изменения директивы arg_separator в .ini файле. К сожалению, большинство пользовательских приложений не отправляют данные формы в формате с разделителем "точка с запятой". Более переносимый способ решить эту проблему - это использовать &amp; вместо & в качестве разделителя. Вам не нужно будет для этого изменять PHP-директиву arg_separator. Оставьте разделитель как &, но кодируйте ваши URL с помощью htmlentities() или htmlspecialchars().

Смотрите также

  • urldecode() - Декодирование URL-кодированной строки
  • htmlentities() - Преобразует все возможные символы в соответствующие HTML-сущности
  • rawurlencode() - URL-кодирование строки согласно RFC 3986
  • rawurldecode() - Декодирование URL-кодированной строки
  • » RFC 3986