_wp_utf8_codepoint_count()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
_wp_utf8_codepoint_count( string $text, ?int $byte_offset, ?int $max_byte_length = PHP_INT_MAX ): int
Описание
Участки некорректных байтов считаются одной кодовой точкой согласно правилу максимальной подчасти. Эта функция является резервным методом для вызова mb_strlen( $text, 'UTF-8' ).
Если для смещений в байтах или длины передаются отрицательные значения, функция всегда сообщит о нуле кодовых точек.
Пример:
4 === _wp_utf8_codepoint_count( 'text' );
// Groups are 'test', "\x90" as '�', 'wp', "\xE2\x80" as '�', "\xC0" as '�', and 'test'.
13 === _wp_utf8_codepoint_count( "test\x90wp\xE2\x80\xC0test" );
Оригинал (английский)
Invalid spans of bytes count as a single code point according to the maximal subpart rule. This function is a fallback method for calling mb_strlen( $text, 'UTF-8' ).
When negative values are provided for the byte offsets or length, this will always report zero code points.
Example:
4 === _wp_utf8_codepoint_count( 'text' );
// Groups are 'test', "\x90" as '�', 'wp', "\xE2\x80" as '�', "\xC0" as '�', and 'test'.
13 === _wp_utf8_codepoint_count( "test\x90wp\xE2\x80\xC0test" );
Параметры
$text
string
обязательный
$byte_offset
?int
обязательный
$max_byte_length
?int
необязательный
= PHP_INT_MAX
Возвращаемое значение
int
Исходный код
wp-includes/compat-utf8.php:341
function _wp_utf8_codepoint_count( string $text, ?int $byte_offset = 0, ?int $max_byte_length = PHP_INT_MAX ): int {
if ( $byte_offset < 0 ) {
return 0;
}
$count = 0;
$at = $byte_offset;
$end = strlen( $text );
$invalid_length = 0;
$max_byte_length = min( $end - $at, $max_byte_length );
while ( $at < $end && ( $at - $byte_offset ) < $max_byte_length ) {
$count += _wp_scan_utf8( $text, $at, $invalid_length, $max_byte_length - ( $at - $byte_offset ) );
$count += $invalid_length > 0 ? 1 : 0;
$at += $invalid_length;
}
return $count;
}
История изменений
| Версия | Описание |
|---|---|
| 6.9.0 | Introduced. |

