PHP - BASIC - 9. PHPの文字列を扱う関数 - 7. マルチバイト関数
PHPプログラムにおいて、日本語のようなマルチバイト文字列を扱う場合は、マルチバイト用の文字列関数を使う必要があります。具体的には マルチバイト文字列の長さを取得する mb_strlen
関数や、マルチバイト文字列の部分文字列を取得する mb_substr
関数といったものが用意されています。
これらのマルチバイト用の関数はPHPの mbstring
モジュールとして定義されています。PHPの実行環境によっては mbstring
モジュールがデフォルトで無効となっているケースもあります。そのような場合は php.ini
ファイルを編集して mbstring
モジュールを有効にする必要があります。
Macに標準でインストールされているPHPの実行環境(7.3系)においては
mbstring
モジュールがデフォルトで有効になっています。Windowsの場合はインストール方法にもよりますがphp.ini
ファイルの編集が必要になります。
それではマルチバイト文字列用の mb_strlen
関数を使うプログラム( string7.php
)を作成してみましょう。
<?php
$message = "ハローワールド";
$length = mb_strlen($message);
echo $length . PHP_EOL;
mb_strlen
関数は strlen
関数と同様に、引数に対象となる文字列を受け取り、戻り値に文字列長を返します。またここでは戻り値を受け取るために $length
変数を用意しています。
作成したプログラムを実行してみましょう。ターミナルから次のように実行します。
$ php string6.php
7
実行結果から ハローワールド
の文字列長である7が出力されているのがわかります。
参考: php.iniファイルの編集 (Windowsの場合)
ここで取り上げた mb_strlen
関数を使うプログラム( string7.php
)が正しく動作しない場合は mbstring
モジュールが無効となっている可能性があります。 php.ini
ファイルを開いて mbstring
モジュールの設定を確認してみましょう。
php.ini
ファイルを開いてテキストエディタの検索機能(VS Codeの場合は ctrl + f
キー)を使って「mbstring」を検索します。そうすると extension
という項目の中に次のような設定項目が存在します。
; extension=mbstring
extension
とは拡張を意味する言葉です。PHPはmbstring
モジュールなど、様々なモジュールを追加できるようになっています。
php.ini
ファイルでは先頭の ;
はコメント行を表しています。そのため上記の設定項目はコメントアウトされており、無効となっていることがわかります。 mbstring
モジュールを有効にするには以下のように先頭の ;
を外すようにします。
extension=mbstring
以上で mbstring
モジュールは有効となり、マルチバイト文字列用の関数が利用できるようになります。
またマルチバイト文字列処理の詳細な設定も済ませておくと良いでしょう。 php.ini
ファイルの中で「mbstring」を検索して以下の項目を設定します。以下はPHPの内部エンコーディングに UTF-8
を設定するものです。
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
デフォルトでは上記の設定項目は ;
コメントアウトされているので、先頭の ;
を外して値の部分を記述していくようにします。設定項目を確認するには php - i
コマンドを使います。結果の中に内容が確認できます。
(...省略)
mbstring.detect_order => auto => auto
mbstring.encoding_translation => Off => Off
mbstring.http_input => pass => pass
mbstring.http_output => pass => pass
mbstring.internal_encoding => UTF-8 => UTF-8
mbstring.language => Japanese => Japanese
(...省略)
php -i
コマンドを実行すると、多くの設定項目が表示されるのでgrep
コマンドで結果を絞り込んだり、結果をファイルにコピーしてから確認したりすると良いでしょう。あるいはphpinfo
関数を使って設定項目を確認することもできます。