ラボ > PHP:文字関連

PHP 文字数とbyte(バイト)数の取得(strlen(), mb_strlen())

文字数やbyte(バイト)数、UTF8絡みだったり。

作成日:2017-12-27, 更新日:2017-12-27

byte(バイト)数

shift-jisだと全角1文字が2byte(バイト)だけど、UTF-8は違う。

echo strlen(文字列);

文字数

echo mb_strlen(文字列);

半角は1文字(byte)、全角は2文字(byte)扱いで

shift-jisに変換してからbyte(バイト)数を取得すれば、半角1文字・全角2文字としてカウントした文字数になる。

echo strlen( mb_convert_encoding(文字列, 'SJIS-win', 変換元の文字コード) );

※「SJIS」じゃなく「SJIS-win」にしてるのは「①㈱」みたいな特殊文字も変換させるため。

注意

元の文字列がファイルから読み込んでくる場合は、文字コードに注意する。

shift-jisのファイルから読み込んだ文字列をUTF8で調べたりすると・・・求めていない結果になる。
「mb_convert_encoding()」で文字コードを合わせるのが分かりやすくて良いと思う。