(PHP 8 >= 8.4.0)
grapheme_str_split — Split a string into an array
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).
string
The string to split into grapheme clusters or chunks.
string must be valid UTF-8.
length
Each element of the returned array will be composed of length grapheme clusters.
grapheme_str_split() returns an array of strings, or false on failure.
If length is less than 1,
a ValueError will be thrown.
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;
}
}
}
?>