Here is a userland implementation that can be included in code that needs to support PHP 8.3 and below:
<?php
if (!function_exists('grapheme_str_split')) {
function grapheme_str_split(string $string, int $length = 1): array|false
{
if ($length < 1) {
throw new \ValueError('Argument #2 ($length) must be greater than 0 and less than or equal to 1073741823');
}
try {
return preg_split('/(\X{' . $length . '})/u', $string, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
} catch (\Throwable $e) {
return false;
}
}
}
?>grapheme_str_split
(PHP 8 >= 8.4.0)
grapheme_str_split — Split a string into an array
Description
This function will return an array of strings,
it is a version of str_split()
with support for grapheme cluster byte characters.
If the length parameter is specified,
the string is broken down into chunks of the specified length
in grapheme clusters (not bytes).
Parameters
string-
The string to split into grapheme clusters or chunks.
stringmust be valid UTF-8. length-
Each element of the returned array will be composed of
lengthgrapheme clusters.
Return Values
grapheme_str_split() returns an array of strings, or false on failure.
Errors/Exceptions
If length is less than 1,
a ValueError will be thrown.
See Also
- str_split() - Convert a string to an array
- mb_str_split() - Given a multibyte string, return an array of its characters
- » Unicode Text Segmentation: Grapheme Cluster Boundaries
+add a note
User Contributed Notes 1 note
cygx1 at blackhole dot io ¶
1 year ago