PHPの文字数を取得する方法について書いています。
今回は文字(バイト)数に関する下記の関数について解説しています。
・mb_strlen
文字を数えるときには、基本的にmb_strlen関数を使うと良いです。
strlen関数は文字の長さをバイト単位で返すので、単純な文字数とは異なります。
2つの関数について見ていきましょう。
strlen関数でバイト数を取得する
strlen関数を使うと、文字の長さをバイト単位で数えて返してくれます。
公式のドキュメントではこちらに記載がありました。
例えば、下記のように使うことができます。
$stringLength = strlen("hello");
echo $stringLength; // 5
$stringLength
変数に対して、strlen関数を呼び出して返ってきた結果を代入しています。
strlen関数には文字列の「hello
」を渡しています。
これで渡した文字列のバイト数が返ってきます。
半角英字を渡したので、バイト数の5が返ってきました。
文字数ではないので注意が必要です。
日本語でstrlen関数を使うと?
日本語で使うとバイト数が返ってくるので、下記のようになります。
$stringLength = strlen("こんにちは");
echo $stringLength; // 15
strlen関数には、日本語の「こんにちは
」を渡しています。
1文字が3バイトで「15」が返ってきました。
strlen関数では、このようにバイト数が返ってくるので注意が必要です。
strlen関数の引数・戻り値
strlen関数の引数と戻り値です。
引数
バイト数を調べたい文字列を渡します。
戻り値
文字列のバイト数が返ってきます。
mb_strlen関数で文字を数える
mb_strlen関数を使うことで、文字数を返してくれます。
こちらは文字数を返すので、マルチバイト文字の日本語の文字列でも、しっかりと文字数を返してくれます。
公式のドキュメントではこちらに記載がありました。
$stringLength = mb_strlen("こんにちは");
echo $stringLength; // 5
mb_strlen
関数に対して、日本語の「こんにちは
」を渡しました。
そうすると、文字数の「5」が返ってきました。
このようにmb_strlen
関数を使うと、文字数が返ってきます。
mb_strlen関数の引数・戻り値
mb_strlen関数の引数と戻り値です。
引数
第1引数に長さを知りたい文字列、第2引数にオプションとして文字エンコーディングを指定できます。
引数 | 必須/オプション | 例 |
---|---|---|
調べたい文字列 | 必須 | mb_strlen(“こんにちは”) |
文字エンコーディング | オプション | mb_strlen(“こんにちは”, “SJIS”) |
文字エンコーディングを指定しない場合は、内部文字エンコーディングが使用されます。
文字エンコーディングは調べたい文字列が”SJIS”など、内部の文字コードと違う場合に有効です。
特に設定していない場合にはUTF-8
が使用されるかと思います。
戻り値
文字数が返ってきます。
文字の長さを数える方法まとめ
今回はPHPで文字の長さを数える方法を確認してみました。
記事の内容をまとめると、下記のようになります。
・mb_strlen関数を使うと、マルチバイト文字でも文字数を返してくれる。
・mb_strlen関数には調べたい文字を渡すと、内部の文字コードで文字数をカウントしてくれる。
strlen関数はバイト数なので気をつけましょう。
基本的にはmb_strlen関数を使うと良いかと思います。
こちらに渡す文字列は内部で使われている文字コードと差異があると、ちゃんとカウントできません。
渡す文字コードと内部文字コードを合わせるように気をつけましょう。
コメント