grapheme_substr

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

grapheme_substrВозвращает часть строки в графемных кластерах

Описание

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

grapheme_substr(
    string $string,
    int $offset,
    ?int $length = null,
    string $locale = ""
): string|false

Функция возвращает часть строки. Смещение и длина измеряются в графемных кластерах.

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

string

Входная строка по стандарту UTF-8, часть которой требуется вернуть.

offset

Начальная позиция подстроки в графемных кластерах, а не в байтах или кодовых точках. При передаче в параметр offset нуля или положительного значения началом подстроки станет позиция offset, которую функция при подсчёте с нуля найдёт с начала строки string. При передаче в параметр offset отрицательного значения началом подстроки станет позиция offset, которую функция также вычислит в графемных кластерах, но с конца строки.

length

Длина подстроки в графемных кластерах. Положительное значение параметра length ограничит длину подстроки; функция вернёт подстроку меньшей длины, если количество графемных кластеров с позиции offset до конца строки окажется меньше значения length. При отрицательном значении параметра length функция отбросит графемные кластеры с конца строки; при отрицательном значении смещения offset усечение выполняется после вычисления начальной позиции. При пересечении позиций смещения offset и усечения функция вернёт пустую строку.

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

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

Функция возвращает подстроку, которую извлекла из строки string, или false, если возникла ошибка.

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

Версия Описание
8.5.0 Добавили необязательный параметр locale.
8.0.0 Функция теперь автоматически уменьшает или увеличивает значение смещения, которое выходит за пределы строки; раньше при выходе смещения за границы строки вместо пустой строки возвращалось значение false.

Примеры

Пример #1 Пример извлечения подстроки в графемных кластерах функцией grapheme_substr()

<?php

// Символ | Название | Кодовая точка | Форма нормализации

// å: 'LATIN SMALL LETTER A WITH RING ABOVE', U+00E5, NFD
$char_a_ring_nfd = "a\xCC\x8A";

// ö: 'LATIN SMALL LETTER O WITH DIAERESIS', U+00F6, NFD
$char_o_diaeresis_nfd = "o\xCC\x88";

echo
urlencode(grapheme_substr("ao" . $char_a_ring_nfd . "bc" . $char_o_diaeresis_nfd . "O", 2, -1));

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

a%CC%8Abco%CC%88

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

Добавить

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

Пользователи ещё не добавляли примечания для страницы
To Top