Кодирует строку для безопасного включения в структуру URL-адреса

# urlencode

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

urlencode — Кодирует строку для безопасного включения в структуру URL-адреса

### Описание

function urlencode(string `$string`): string

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

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

`string`

  Строка для кодирования.

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

Функция возвращает строку в которой каждый символ, кроме буквенно-цифровых и `-_.`, заменила знаком `%`, за которым следует два шестнадцатеричных числа, а пробелы закодировала знаком `+`. Строка кодируется аналогично данным при отправке веб-формы с типом контента `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">

### Примечания

> Замечание:

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

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

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

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open