Функция UTF8_URI_ENCODE() в WordPress

Функция UTF8_URI_ENCODE() в WordPress

Функция UTF8_URI_ENCODE() используется для кодирования значений Unicode, которые будут использоваться в URI (Uniform Resource Identifier — унифицированный идентификатор ресурса). Это особенно полезно для работы с некорректными символами в URL, например, с кириллицей.

Возврат

Функция возвращает строку. Это строка с закодированными значениями Unicode, которая безопасна для использования в URI.

Использование

Синтаксис

utf8_uri_encode( $utf8_string, $length, $encode_ascii_characters );
  • $utf8_string (string) (обязательный) — строка, которую нужно закодировать.
  • $length (int) — максимальная длина возвращаемой строки.
  • $encode_ascii_characters (true|false) — нужно ли кодировать ASCII символы, такие как <, ", '. По умолчанию: false.

Примеры

Пример 1: Создание правильного URI для нелатинских символов

$utf8_string = "http://example.com/ссылка-на_istochnik";

echo utf8_uri_encode( $utf8_string );

Результат выполнения кода:

http://example.com/%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b0-%d0%bd%d0%b0_istochnik

Изменения в версии

  • С 1.5.0 — Функция была введена.
  • С 5.8.3 — Добавлен параметр encode_ascii_characters.

Код функции

Вот как выглядит исходный код функции:


function utf8_uri_encode( $utf8_string, $length = 0, $encode_ascii_characters = false ) {
$unicode = '';
$values = array();
$num_octets = 1;
$unicode_length = 0;

mbstring_binary_safe_encoding();
$string_length = strlen( $utf8_string );
reset_mbstring_encoding();

for ( $i = 0; $i < $string_length; $i++ ) {
    $value = ord( $utf8_string[ $i ] );

    if ( $value < 128 ) {
        $char                = chr( $value );
        $encoded_char        = $encode_ascii_characters ? rawurlencode( $char ) : $char;
        $encoded_char_length = strlen( $encoded_char );
        if ( $length && ( $unicode_length + $encoded_char_length ) > $length ) {
            break;
        }
        $unicode        .= $encoded_char;
        $unicode_length += $encoded_char_length;
    } else {
        if ( count( $values ) === 0 ) {
            if ( $value < 224 ) {
                $num_octets = 2;
            } elseif ( $value < 240 ) {
                $num_octets = 3;
            } else {
                $num_octets = 4;
            }
        }

        $values[] = $value;

        if ( $length && ( $unicode_length + ( $num_octets * 3 ) ) > $length ) {
            break;
        }
        if ( count( $values ) === $num_octets ) {
            for ( $j = 0; $j < $num_octets; $j++ ) {
                $unicode .= '%' . dechex( $values[ $j ] );
            }

            $unicode_length += $num_octets * 3;
            $values     = array();
            $num_octets = 1;
        }
    }
}

return $unicode;

}

Связанные функции

Если вы заинтересованы в других функциях, связанных с форматированием в WordPress, вот некоторые из них:

  • absint() — для получения числа в целочисленном формате.
  • add_magic_quotes() — для добавления обратных слешей к строкам.
  • antispambot() — для защиты от спама.
  • make_clickable() — для автоматического преобразования текстовых ссылок в ссылки HTML.

��ти функции могут быть полезны при работе с форматированием и обработкой текста в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *