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 string7.php
7
実行結果から ハローワールド
の文字列長である7が出力されているのがわかります。
まとめ
- 日本語のような文字はマルチバイト文字列に該当する
- マルチバイト文字列を処理する場合は
mbstring
モジュールの関数を使う mbstring
モジュール内の関数はmb_strlen
のように通常の文字列関数にmb_
という接頭辞がつく