[PHP] mb_strlen 文字列の長さを取得する

PHPの文字列の長さを取得するサンプルです。

確認環境
・PHP 7

目次

サンプル mb_strlenとは
  ファイルがUTF-8で保存されている場合
  ファイルがShift-JISで保存されている場合
  内部文字エンコーディングの種類を確認
  strlenとは

mb_strlenとは

mixed mb_strlen ( string 文字列 [, string エンコーディング] )
  • 文字列の長さを取得します。
  • 日本語のひらがなや漢字などのマルチバイト文字に対応しています。
  • エンコーディングを省略した場合は内部文字エンコーディングを使用します。
    →内部文字エンコーディングは、mb_internal_encoding関数で確認できます。

ファイルがUTF-8で保存されている場合

ファイルはUTF-8で保存されていて、内部エンコーディングがUTF-8の場合です。

<?php

echo mb_internal_encoding(); //UTF-8

$test1 = "あいう";
$test2 = "あいうえおabc";

print mb_strlen($test1); //3
print mb_strlen($test2,"UTF-8"); //8

3行目は、mb_internal_encoding関数で、現在の内部文字エンコーディングを表示しています。
8,9行目は、mb_strlen関数で文字列の長さを取得しています。

ファイルがShift-JISで保存されている場合

ファイルはShift-JISで保存されていて、内部エンコーディングがUTF-8の場合です。
mb_strlen関数の2つめの引数をSJISに変更します。

<?php

echo mb_internal_encoding(); //UTF-8

$test1 = "あいう";
$test2 = "あいうえおabc";

print mb_strlen($test1,"SJIS");//3
print mb_strlen($test2,"SJIS");//8

以下は、PHPマニュアルのmb_strlen関数のリンクです。
http://php.net/manual/ja/function.mb-strlen.php

内部文字エンコーディングの種類を確認

mb_list_encodings関数は、サポートされている内部文字エンコーディングの種類を返します。

<?php
foreach (mb_list_encodings() as $value){
	echo $value."<br />\n"; //86種類表示
}

テスト環境では86種類表示されました。

以下は、PHPマニュアルのmb_list_encodings関数のリンクです。
http://php.net/manual/ja/function.mb-list-encodings.php

strlenとは

int strlen (string 文字列)
  • 文字列の長さを取得します。
  • 日本語のひらがなや漢字などのマルチバイト文字に対応していません
    →mb_strlen関数を使用して下さい。
<?php

$test1 = "abc";
$test2 = "abcd";

print strlen($test1);//3
print strlen($test2);//4

以下は、PHPマニュアルのstrlen関数のリンクです。
http://php.net/manual/ja/function.strlen.php

関連の記事

PHP 文字列の値を比較するサンプル(strcmp)
PHP 英字の大文字と小文字を変換(strtolower/strtoupper)
[PHP] mb_substr 文字列を切り出すサンプル

△上に戻る