PHP - BASIC - 9. PHPの文字列を扱う関数 - 7. マルチバイト関数

PHPプログラムにおいて、日本語のようなマルチバイト文字列を扱う場合は、マルチバイト用の文字列関数を使う必要があります。具体的には マルチバイト文字列の長さを取得する mb_strlen 関数や、マルチバイト文字列の部分文字列を取得する mb_substr 関数といったものが用意されています。

これらのマルチバイト用の関数はPHPの mbstring モジュールとして定義されています。PHPの実行環境によっては mbstring モジュールがデフォルトで無効となっているケースもあります。そのような場合は php.ini ファイルを編集して mbstring モジュールを有効にする必要があります。

モジュールとは、ある目的に沿った再利用可能なプログラムと考えると良いでしょう。mbstringモジュールはマルチバイト文字列を処理することを目的にとした再利用可能なプログラム(関数群)です。Cloud9 では mbstring モジュールがデフォルトで有効になっています。WindowsやMacのローカル環境で開発する場合、mbstring モジュールが無効になっていることもあります。そのような場合は php.ini ファイルを編集する必要があります。

注意:Cloud9環境での mbstring モジュールの追加について

Cloud9ではデフォルトでmbstringモジュールがインストールされていないので、ターミナルに以下のコマンドを貼り付けてインストールしてください。

$ sudo yum install -y php-mbstring

プログラムの作成

それではマルチバイト文字列用の mb_strlen 関数を使うプログラム( string7.php )を作成してみましょう。

<?php
$message = "ハローワールド";
$length = mb_strlen($message);
echo $length . PHP_EOL;

mb_strlen 関数は strlen 関数と同様に、引数に対象となる文字列を受け取り、戻り値に文字列長を返します。またここでは戻り値を受け取るために $length 変数を用意しています。

作成したプログラムを実行してみましょう。ターミナルから次のように実行します。

$ php string6.php
7

実行結果から ハローワールド の文字列長である7が出力されているのがわかります。

まとめ

  • 日本語のような文字はマルチバイト文字列に該当する
  • マルチバイト文字列を処理する場合は mbstring モジュールの関数を使う
  • mbstring モジュール内の関数は mb_strlen のように通常の文字列関数に mb_ という接頭辞がつく