PHPで文字の長さを数える方法!(strlen, mb_strlen)

PHP

PHPの文字数を取得する方法について書いています。
今回は文字(バイト)数に関する下記の関数について解説しています。

・strlen
・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で文字の長さを数える方法を確認してみました。
記事の内容をまとめると、下記のようになります。

・strlen関数はバイト数が返ってくるので、マルチバイト文字だと文字数にならない。
・mb_strlen関数を使うと、マルチバイト文字でも文字数を返してくれる。
・mb_strlen関数には調べたい文字を渡すと、内部の文字コードで文字数をカウントしてくれる。

strlen関数はバイト数なので気をつけましょう。

基本的にはmb_strlen関数を使うと良いかと思います。
こちらに渡す文字列は内部で使われている文字コードと差異があると、ちゃんとカウントできません。

渡す文字コードと内部文字コードを合わせるように気をつけましょう。

コメント

タイトルとURLをコピーしました