Функция для извлечения последовательности кластеров графем по умолчанию из текстового буфера, которая должна быть закодирована в UTF-8

# grapheme_extract

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_extract — Функция для извлечения последовательности кластеров графем по умолчанию из текстового буфера, которая должна быть закодирована в UTF-8

### Описание

Процедурный стиль

function grapheme_extract(
string `$haystack`,
int `$size`,
int `$type` = `GRAPHEME_EXTR_COUNT`,
int `$offset` = 0,
int `&$next` = `null`
): string|false

Функция для извлечения последовательности кластеров графем по умолчанию из текстового буфера, которая должна быть закодирована в UTF-8.

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

`haystack`

  Строка для поиска.

`size`

  Максимальное количество возвращаемых элементов на основе `type`.

`type`

  Определяет тип единиц, на которые указывает параметр `size`:

  - GRAPHEME_EXTR_COUNT (по умолчанию) - `size` - это количество кластеров графемы для извлечения по умолчанию.
  - GRAPHEME_EXTR_MAXBYTES - `size` - максимальное количество возвращаемых байтов.
  - GRAPHEME_EXTR_MAXCHARS - `size` - это максимальное количество возвращаемых символов UTF-8.
`offset`

  Начальная позиция `haystack` в байтах - если задано, оно должно быть нулём или положительным значением, которое меньше или равно длине `haystack` в байтах, либо отрицательным значением, отсчитываемым от конца `haystack`. Если `offset` не указывает на первый байт символа UTF-8, начальная позиция перемещается на границу следующего символа.

`next`

  Ссылка на значение, которое будет установлено для следующей начальной позиции. Когда вызов возвращается, это может указывать на позицию первого байта за концом строки.

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

Строка, начинающаяся со смещения `offset` и заканчивающаяся границей кластера графемы по умолчанию, которая соответствует указанным `size` и `type` или `false`, если возникла ошибка.

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

Версия | Описание
--- | ---
7.1.0 | Добавлена поддержка отрицательных значений `offset`.

### Примеры

Пример #1 Пример использования grapheme_extract()

    <?php

    $char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

    print urlencode(grapheme_extract( $char_a_ring_nfd . $char_o_diaeresis_nfd, 1, GRAPHEME_EXTR_COUNT, 2));

    ?>

Результат выполнения приведённого примера:

    o%CC%88

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

- grapheme_substr() - Возвращает часть строки в графемных кластерах
- » Сегментация текста в Unicode: границы кластера графемы

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open