文字列の長さを取得する
strlen関数を使うと、渡した文字列の長さ(バイト数)を取得することができます。
PHP コード例
strlen($str);
ここで、試しにアルファベットと日本語の2種類の文字列を渡して実行してみます。
PHP コード例
$str1 = "This is test string.";
$str2 = "これはテスト用の文字列です。";
var_dump( strlen($str1));
var_dump( strlen($str2));
出力例
int(20)
int(42)
$str1は「20」、$str2は「42」と出力されてます。
スペースなどの空白も文字数に含むため、$str1については正しく文字列の長さが取得できています。
しかし$str2は「14」と取得したいところですが3倍の数値が出力されました。
これは日本語の文字はアルファベットと違ってマルチバイトを使っていることが原因です。
strlen関数は文字列の長さをバイト数で取得するため、文字列に日本語や全角文字が含まれる場合は文字数を取得することができません。
そこで、日本語の文字数を調べるときはマルチバイト対応しているmb_strlen関数を使います。
日本語のようなマルチバイトの文字を数える
mb_strlen関数も基本的な使い方はstrlen関数と同様です。
PHP コード例
$str1 = "This is test string.";
$str2 = "これはテスト用の文字列です。";
var_dump( mb_strlen($str1));
var_dump( mb_strlen($str2));
出力例
int(20)
int(14)
今回は日本語の文字についても「14」と正しい長さを取得することができました。