最終更新日:
公開日:
レシピ
文字列
文字列の長さを取得する
strlen関数とmb_strlen関数を使って、文字列の長さを正確に数える方法について解説します。
この記事のポイント
- strlen関数で文字列の長さを数える
- 日本語のようなマルチバイトの文字はmb_strlen関数で数える
目次
文字列の長さを取得する
strlen関数を使うと、渡した文字列の長さ(バイト数)を取得することができます。
コード例
strlen($str);
ここで、試しにアルファベットと日本語の2種類の文字列を渡して実行してみます。
コード例
$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関数と同様です。
コード例
$str1 = "This is test string.";
$str2 = "これはテスト用の文字列です。";
var_dump( mb_strlen($str1));
var_dump( mb_strlen($str2));
出力例
int(20)
int(14)
今回は日本語の文字についても「14」と正しい長さを取得することができました。