PHPプログラミング

レシピ

文字列

日本語の文字数を数える

日本語(全角文字)が含まれる文字列について、文字数を正確に数える方法を解説します。

この記事のポイント

  • 日本語の文字数を正確に数える
  • 文字コードを指定して文字数を数える

目次

日本語はマルチバイトの文字として数える

文字数を数えるとき、phpではstrlen関数を使いますが、日本語など全角文字が含まれている場合はマルチバイト用のmb_strlen関数を使います。

オプションで、mb_strlen関数は2つ目のパラメータに文字コードを指定することができます。
すでにphp.iniやサーバー内で文字列を指定していたり、コード内のどこかでmb_internal_encoding関数を使って設定していたら2つ目のパラメータは不要ですが、あえて別の文字コードを指定することも可能です。

それでは、実際にコードをみていきましょう。
まずはstrlen関数のみを実行してみます。

コード例

$string = "abcde";
$string2 = "あいうえお";

// 半角英字の文字数をカウント
var_dump( strlen($string) );

// 日本語の文字数をカウント
var_dump( strlen($string2) );

実行結果

strlen関数の実行結果

日本語の文字数については一致していません。
次に、mb_strlen関数で文字数を数えてみます。

コード例

$string = "abcde";
$string2 = "あいうえお";

// 半角英字の文字数をカウント
var_dump( mb_strlen( $string) );

// 日本語の文字数をカウント
var_dump( mb_strlen( $string2) );

実行結果

mb_strlen関数の実行結果

半角英字、日本語のいずれもうまく文字数を取得することができました。

明示的に文字コードを指定する

mb_strlen関数の2つ目のパラメータで明示的に文字コードを指定したい場合は、次のようなコードになります。

コード例

// UTF-8を指定
mb_strlen( $string, "UTF-8");

// Shift_JISを指定
mb_strlen( $string, "Shift_JIS");

// EUC-JPを指定
mb_strlen( $string, "EUC-JP");

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。