urlencode

(PHP 4, PHP 5, PHP 7, PHP 8)

urlencodeURL-кодирует строку

Описание

urlencode(string$string): string

Функция кодирует строку, которая будет использоваться в части запроса URL-адреса, что упрощает передачу переменных на следующую страницу.

Список параметров

string

Строка, которая будет закодирована.

Возвращаемые значения

Функция возвращает строку, в которой символы, кроме буквенно-цифровых и -_., были заменены знаком процента (%), за которым следует два шестнадцатеричных числа, а пробелы закодированы как знак сложения (+). Строка кодируется тем же способом, что и POST-данные веб-формы, то есть по типу контента application/x-www-form-urlencoded. Это отличается от кодирования по стандарту » RFC 3986 (смотрите описание функции rawurlencode() ) тем, что по историческим причинам пробелы кодируются как знак «плюс» (+).

Примеры

Пример #1 Пример использования функции urlencode()

<?php

$userinput
= 'Data123!@-_ +';
echo
"Пользовательские данные: $userinput\n";
echo
'<a href="mycgi?foo=', urlencode($userinput), '">';

?>

Результат выполнения приведённого примера:

Пользовательские данные: Data123!@-_ + <a href="mycgi?foo=Data123%21%40-_+%2B">

Пример #2 Пример использования функций urlencode() и htmlentities()

<?php

$foo
= 'Data123!@-_ +';
$bar = "Содержание, которое отличается от значения $foo";
echo
"foo: $foo\n";
echo
"bar: $bar\n";
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo
'<a href="mycgi?' . htmlentities($query_string) . '">';

?>

Результат выполнения приведённого примера:

foo: Data123!@-_ + bar: Содержание, которое отличается от значения Data123!@-_ + <a href="mycgi?foo=Data123%21%40-_+%2B&amp;bar=Not+the+same+content+as+Data123%21%40-_+%2B">

Примечания

Замечание:

Соблюдают осторожность с переменными, которые совпадают с HTML-сущностями. Мнемоники наподобие &amp, &copy и &pound браузер разбирает и использует как реальные сущности, а не как имя переменной. Это известная проблема, о которой консорциум W3C рассказывает людям много лет. Подробнее рассказано по ссылке: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2

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

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

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