mb_strlen

関数の概要

PHPの mb_strlen 関数は、マルチバイト文字列の長さ(文字数)を取得するための関数です。日本語や中国語、韓国語などのマルチバイト文字を正しく扱いたい場合に非常に便利で、単純な strlen 関数ではバイト数を返してしまうため、文字数の取得に誤りが生じることがあります。mb_strlen はこうした問題を解決し、正確な文字数を取得できます。

パラメータの説明

  • string $str:長さを測りたい対象の文字列。
  • string|null $encoding(省略可能):文字エンコーディングを指定します。省略した場合は内部エンコーディングが使われます。

戻り値

指定した文字列の文字数を整数で返します。マルチバイト文字も1文字としてカウントされるため、日本語などでも正確な文字数が返ります。

使用例

基本的な使い方

<?php
$str = "こんにちは";
$length = mb_strlen($str);
echo $length; // 5
?>

この例では日本語の「こんにちは」の文字数を取得しています。mb_strlen はマルチバイト文字を1文字としてカウントするため、5が出力されます。

エンコーディングを指定する例

<?php
$str = "안녕하세요";
$length = mb_strlen($str, "UTF-8");
echo $length; // 5
?>

UTF-8の文字列に対してエンコーディングを明示的に指定した場合の例です。韓国語の文字列「안녕하세요」の長さを正しく取得しています。

半角と全角の混在文字列の長さ取得

<?php
$str = "abcあいう";
$length = mb_strlen($str);
echo $length; // 6
?>

半角英数字「abc」と全角ひらがな「あいう」が混ざった文字列の長さも正しく6文字と認識されます。

関連する関数

  • strlen:バイト単位で長さを取得する標準関数。マルチバイト文字は正しく扱えません。
  • mb_substr:マルチバイト文字列の指定範囲を切り出す関数。
  • mb_strpos:マルチバイト文字列内での文字の位置を取得する関数。
  • mb_internal_encoding:内部文字エンコーディングを設定・取得する関数。

まとめ

mb_strlen はマルチバイト文字を正確にカウントできるPHPの便利な関数です。日本語やその他のマルチバイト言語の文字列操作においては、単なる strlen よりも信頼性が高く、エンコーディングを指定すれば文字化けなどのトラブルも防げます。マルチバイト対応のプログラムを書く際には、必ず覚えておきたい重要な関数の一つです。