_wp_utf8_codepoint_span()
Given a starting offset within a string and a maximum number of code points, return how many bytes are occupied by the span of characters.
Invalid spans of bytes count as a single code point according to the maximal subpart rule. This function is a fallback method for calling strlen( mb_substr( substr($text,$at), 0,$max_code_points) ).
Internal function — this function is designed to be used by the kernel itself. It is not recommended to use this function in your code.
No Hooks.
Returns
Int. Number of bytes spanned by the code points.
Usage
_wp_utf8_codepoint_span( $text, $byte_offset, $max_code_points, ?int $found_code_points ): int;
- $text(string) (required)
- Count bytes of span in this text.
- $byte_offset(int) (required)
- Start counting at this byte offset.
- $max_code_points(int) (required)
- Stop counting after this many code points have been seen, or at the end of the string.
- ?int $found_code_points(passed by reference — &)
- .
Changelog
| Since 6.9.0 | Introduced. |
_wp_utf8_codepoint_span() wp utf8 codepoint span code WP 7.0
function _wp_utf8_codepoint_span( string $text, int $byte_offset, int $max_code_points, ?int &$found_code_points = 0 ): int {
$was_at = $byte_offset;
$invalid_length = 0;
$end = strlen( $text );
$found_code_points = 0;
while ( $byte_offset < $end && $found_code_points < $max_code_points ) {
$needed = $max_code_points - $found_code_points;
$chunk_count = _wp_scan_utf8( $text, $byte_offset, $invalid_length, null, $needed );
$found_code_points += $chunk_count;
// Invalid spans only convey one code point count regardless of how long they are.
if ( 0 !== $invalid_length && $found_code_points < $max_code_points ) {
++$found_code_points;
$byte_offset += $invalid_length;
}
}
return $byte_offset - $was_at;
}