Grapheme (grapheme cluster)** là đơn vị chức năng nhỏ nhất của hệ thống viết. Có thể hiểu là đơn vị viết nhỏ nhất tương ứng với âm thanh.
Hàm grapheme_strlen() trong PHP dùng để lấy độ dài chuỗi tính theo đơn vị grapheme. Hàm này không trả về độ dài byte hay ký tự (character). Hỗ trợ từ PHP 5.3.0+.
Cú pháp
int grapheme_strlen(string $str_string)
Tham số
$str_string– Chuỗi cần đo độ dài. Bắt buộc phải dùng encoding UTF-8.
Giá trị trả về
Trả về độ dài grapheme nếu thành công, false nếu thất bại.
Ví dụ
<?php
// Chuỗi: "abca" + COMBINING DIAERESIS (U+0308) + "o" + COMBINING RING ABOVE (U+030A) + "a" + COMBINING DIAERESIS + "\x122"
$str = "abca\xCC\x8Ao\xCC\x88a\xCC\x8A\x122";
$len = grapheme_strlen($str);
var_dump($len);
?>
Kết quả
int(8)
Giải thích
Chuỗi trên có 8 grapheme cluster: a, b, c, ä (a + combining diaeresis), o̊ (o + combining ring), å (a + combining ring), \x12, 2. Hàm strlen() thường sẽ trả về số byte lớn hơn do multi-byte UTF-8.
Lưu ý
- Cần extension
intl(ICU library) được bật. - Chuỗi phải là UTF-8 hợp lệ, kết quả mới chính xác.
- Hàm liên quan:
grapheme_substr(),grapheme_strpos(),grapheme_strripos().