You can use grapheme_strlen() to count emojis as a single character:
<?php
echo strlen('🏴'); //28 - oh no
echo mb_strlen('🏴'); // - closer, but no
echo grapheme_strlen('🏴'); //1 - Bingo
?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
grapheme_strlen — Dizgenin sesletim birimi cinsinden uzunluğunu döndürür
Yordamsal kullanım
Dizgenin sesletim birimi (bayt veya karakter değil) cinsinden uzunluğunu döndürür.
dizge
Uzunluğu sesletim birimi cinsinden ölçülecek dizge. Geçerli bir UTF-8 dizgesi olmalıdır.
Dizge boşsa 0, değilse dizgenin uzunluğu, başarısızlık durumunda false
döner.
Örnek 1 - grapheme_strlen() örneği
<?php
$char_a_ring_nfd = "a\xCC\x8A"; // 'å' (U+00E5) normalleştirme biçimi "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"
print grapheme_strlen( 'abc' . $char_a_ring_nfd . $char_o_diaeresis_nfd .
$char_a_ring_nfd);
?>
Yukarıdaki örneğin çıktısı:
6
You can use grapheme_strlen() to count emojis as a single character:
<?php
echo strlen('🏴'); //28 - oh no
echo mb_strlen('🏴'); // - closer, but no
echo grapheme_strlen('🏴'); //1 - Bingo
?>