作成日: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()」で文字コードを合わせるのが分かりやすくて良いと思う。