関数のオーバーロード機能
&warn.deprecated.feature-7-2-0.removed-8-0-0;
PHP アプリケーションの多くは、英語等のシングルバイトの言語用に設計されており、
日本語を含むマルチバイト文字列を扱う場合には問題を生じる場合があります。
substr 等の PHP の文字列関数の多くは、
マルチバイト文字列に対応していません。
mbstring では、
対応するマルチバイト文字対応版の関数で既存の PHP 関数を
オーバーロードする機能をサポートします。関数のオーバーロードを行うと、例えば
substr を PHP スクリプトでコールした場合に、
mb_substr が代わりにコールされるようになります。
これにより、マルチバイト文字に対応しないアプリケーションの移植が容易となります。
関数オーバーロードを使用するには、&php.ini; の
mbstring.func_overload ディレクティブに正の値を指定します。
これは、オーバーロードされる関数の種類を指定するビットマスクの組み合わせとなります。
mail 関数をオーバーロードするには 1 を指定します。
2 は文字列関数、4 は正規表現関数を表します。つまり、例えば
7 を指定すると、メール関数、文字列関数および正規表現関数が
オーバーロードされることになります。オーバーロードされる関数の一覧を以下に示します。
オーバーロードされる関数
mbstring.func_overload の値
元の関数
オーバーロードする関数
1
mail
mb_send_mail
2
strlen
mb_strlen
2
strpos
mb_strpos
2
strrpos
mb_strrpos
2
substr
mb_substr
2
strtolower
mb_strtolower
2
strtoupper
mb_strtoupper
2
stripos
mb_stripos
2
strripos
mb_strripos
2
strstr
mb_strstr
2
stristr
mb_stristr
2
strrchr
mb_strrchr
2
substr_count
mb_substr_count
ディレクトリ単位の設定でこのオプションを使用することは推奨されません。
これは、実際の運用環境ではまだ安定性が確認されておらず、
予期しない結果をもたらす可能性があるためです。