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