update page now

grapheme_str_split

(PHP 8 >= 8.4.0)

grapheme_str_splitРазбивает строку на массив графемных кластеров

Описание

grapheme_str_split(string $string, int $length = 1): array|false

Функция возвращает массив строк и работает аналогично функции str_split(), но разбивает строку по графемным кластерам — последовательностям одно- или многобайтовых кодовых точек, которыми кодируется единое для восприятия графическое представление символа. Функция разбивает строку на части заданной длины, если передали аргумент length; длина отдельной части измеряется не в байтах, а в графемных кластерах.

Список параметров

string

Строка (string), которую требуется разбить на части из одного или большего количества графемных кластеров. Параметр string принимает строку, которая соответствует стандарту UTF-8.

length

Параметр length определяет максимум графемных кластеров в одном элементе массива.

locale
Идентификатор языковых и региональных параметров.

Возвращаемые значения

Функция grapheme_str_split() возвращает массив строк или false, если возникла ошибка.

Ошибки

Функция выбросит ошибку ValueError, если значение параметра length окажется меньше 1.

Список изменений

Версия Описание
8.5.0 Добавили необязательный параметр locale.

Смотрите также

Добавить

Примечания пользователей 1 note

up
1
cygx1 at blackhole dot io
9 months ago
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;
        }
    }
}

?>
To Top