Функция 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.