grapheme_substr

funkcja

Zwraca podciąg ciągu UTF-8 liczony w klastrach grafemowych (znakach widzianych). Bezpieczna alternatywa mb_substr() przy emoji i znakach łączonych.

grapheme_substr(string $string, int $start, ?int $length = null): string|false|null

grapheme_substr wycina podciąg, licząc pozycję i długość w klastrach grafemowych — znakach tak, jak widzi je użytkownik. W tekstach ze standardowymi znakami wynik jest identyczny jak z mb_substr, ale przy emoji lub znakach z łączącymi akcentami (combining marks) mb_substr może zwrócić uszkodzony tekst, a grapheme_substr działa poprawnie.

Funkcja wymaga rozszerzenia intl.

<?php
declare(strict_types=1);

$s = 'Zażółć gęślą';

// Wytnij 4 klastry zaczynając od indeksu 7 (licząc od 0)
echo grapheme_substr($s, 7, 4); // gęśl

// Ujemny $start — od końca
echo grapheme_substr($s, -4);   // ęślą

// Proste porównanie z mb_substr (tu wyniki identyczne, bo brak combining marks)
echo mb_substr($s, 7, 4);       // gęśl