How to count the number of characters, number of bytes, character width (apparent length) of a character string in PHP?
1. strlen
function strlen
Generally, to know the number of bytes, use strlen.
mb_internal_encoding('UTF-8'); $char = 'To die: to sleep No more; and by a sleep to say we end. The heart-ache and the thousand natural shocks. That flesh is heir to, tis a consummation Devoutly to be wishd. '; echo strlen($char);
168
2. mb_strlen
function mb_strlen
Also, use mb_strlen to distinguish between full-width and half-width characters and count the number of characters.
mb_internal_encoding('UTF-8'); $char = '名前(カタカナ)'; echo mb_strlen($char);
3. mb_strwidth
function mb_strwidth
Use mb_strwidth to count character width(apparent length).
mb_internal_encoding('UTF-8'); $char = 'おはようございます。'; echo mb_strwidth($char);
Let’s put emoji and count it.
mb_internal_encoding('UTF-8'); $char = 'こんにちは😀'; echo strlen($char);
-> 19
it is as expected.
Then, let’s display an alert if it is more than 10 bytes.
mb_internal_encoding('UTF-8'); $char = 'こんにちは😀'; // echo strlen($char); if(strlen($char) > 10){ echo "this is more than 10 byte, please write again"; } else { echo "confirmed."; }
-> this is more than 10 byte, please write again
Perfect job, am I.