Ce face grapheme_str_split
Unele „caractere” vizibile sunt formate din mai multe caractere Unicode: steagul României este format din două simboluri regionale, un emoji de familie din mai multe persoane unite, iar „ă” poate fi scris ca „a” urmat de semnul ˘. mb_str_split le desparte, grapheme_str_split le păstrează întregi.
Funcția face parte din extensia intl. Textul trebuie să fie UTF-8 valid.
Parametri
| Parametru | Descriere |
|---|---|
$string |
Textul UTF-8 de împărțit. |
$length |
Câte grafeme să pună în fiecare bucată (implicit 1). |
Ce returnează
Un tablou cu bucățile de text, sau false dacă textul nu este UTF-8 valid.
Exemple
Exemplul 1: Steag și emoji compus
<?php
$text = "🇷🇴👩💻";
echo count(mb_str_split($text)) . " caractere Unicode\n";
echo count(grapheme_str_split($text)) . " grafeme\n";
print_r(grapheme_str_split($text));
Rezultat
5 caractere Unicode
2 grafeme
Array
(
[0] => 🇷🇴
[1] => 👩💻
)
Exemplul 2: Litere scrise cu semn separat
Aici „ă” este scris ca „a” urmat de semnul combinat U+0306, cum apare uneori în texte copiate din PDF-uri.
<?php
$cuvant = "ma\u{0306}r";
print_r(mb_str_split($cuvant));
print_r(grapheme_str_split($cuvant));
Rezultat
Array
(
[0] => m
[1] => a
[2] => ̆
[3] => r
)
Array
(
[0] => m
[1] => ă
[2] => r
)
Greșeli frecvente
- Folosești
str_splitpe text românesc: împarte pe octeți și strică literele cu diacritice. - Funcția lipsește pe server: extensia
intlnu este instalată (php -m | grep intl).
Comenzi înrudite
mb_str_split: Împarte un text în caractere (sau grupuri de caractere), fără să strice literele cu diacritice.str_split: Împarte un text în bucăți de aceeași lungime și le pune într-un tablou.grapheme_levenshtein: Distanța Levenshtein dintre două texte, numărată pe caractere vizibile (grafeme), corectă pentru diacritice și emoji.mb_strlen: Returnează lungimea unui text în caractere, numărând corect literele cu diacritice.