Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8

# grapheme_extract

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

grapheme_extract — Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8

### Description

Procedural style

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

Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.

### Parameters

`haystack`

  String to search.

`size`

  Maximum number items - based on the `type` - to return.

`type`

  Defines the type of units referred to by the `size` parameter:

  - GRAPHEME_EXTR_COUNT (default) -`size` is the number of default grapheme clusters to extract.
  - GRAPHEME_EXTR_MAXBYTES -`size` is the maximum number of bytes returned.
  - GRAPHEME_EXTR_MAXCHARS - `size` is the maximum number of UTF-8 characters returned.
`offset`

  Starting position in `haystack` in bytes - if given, it must be zero or a positive value that is less than or equal to the length of `haystack` in bytes, or a negative value that counts from the end of `haystack`. If `offset` does not point to the first byte of a UTF-8 character, the start position is moved to the next character boundary.

`next`

  Reference to a value that will be set to the next starting position. When the call returns, this may point to the first byte position past the end of the string.

### Return Values

A string starting at offset `offset` and ending on a default grapheme cluster boundary that conforms to the `size` and `type` specified, or `false` on failure.

### Changelog

Version | Description
--- | ---
7.1.0 | Support for negative `offset`s has been added.

### Examples

Example #1 grapheme_extract() example

`<?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));
?>`

The above example will output:

    o%CC%88

### See Also

- grapheme_substr() - Return part of a string
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

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