The 5th Annual China PHP Conference

実行時設定

php.ini の設定により動作が変化します。

mbstring 設定オプション
名前 デフォルト 変更可能 変更履歴
mbstring.language "neutral" PHP_INI_ALL PHP 4.3.0 から利用可能です。PHP 5.2.6以前では PHP_INI_PERDIR でした。
mbstring.detect_order NULL PHP_INI_ALL PHP 4.0.6 から利用可能です。
mbstring.http_input "pass" PHP_INI_ALL PHP 4.0.6 から利用可能です。PHP 5.6.0 で非推奨になりました。
mbstring.http_output "pass" PHP_INI_ALL PHP 4.0.6 から利用可能です。PHP 5.6.0 で非推奨になりました。
mbstring.internal_encoding NULL PHP_INI_ALL PHP 4.0.6 から利用可能です。PHP 5.6.0 で非推奨になりました。
mbstring.script_encoding NULL PHP_INI_ALL PHP 4.3.0 から利用可能です。PHP 5.4.0 で削除されました。代わりに zend.script_encoding を使いましょう。
mbstring.substitute_character NULL PHP_INI_ALL PHP 4.0.6 から利用可能です。
mbstring.func_overload "0" PHP_INI_SYSTEM PHP 4.3 から PHP 5.2.6 では PHP_INI_PERDIR、それ以外のバージョンでは PHP_INI_SYSTEM。 PHP 4.2.0 から利用可能です。PHP 7.2.0 で非推奨になりました。
mbstring.encoding_translation "0" PHP_INI_PERDIR PHP 4.3.0 から利用可能です。
mbstring.strict_detection "0" PHP_INI_ALL PHP 5.1.2 から利用可能です。
PHP_INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

mbstring.language string

mbstring で使用される言語設定(NLS)のデフォルト値。 この設定は mbstring.internal_encoding を定義するため、 php.ini の中で mbstring.internal_encoding は、 mbstring.language の後に置く必要があることに注意してください。

mbstring.encoding_translation boolean

入力される HTTP クエリに関して、 文字エンコーディング検出および内部文字エンコーディングへの変換を行う 透過的な文字エンコーディングフィルタを有効にします。

mbstring.internal_encoding string
警告

この機能は PHP 5.6.0 で 非推奨になります。この機能に頼らないことを強く推奨します。

内部文字エンコーディングのデフォルト値を定義します。

PHP 5.6 以降のユーザーは、これを空のままにしておいて、代わりに default_charset を設定すべきです。

mbstring.http_input string
警告

この機能は PHP 5.6.0 で 非推奨になります。この機能に頼らないことを強く推奨します。

HTTP 入力文字エンコーディングのデフォルト値を定義します。

PHP 5.6 以降のユーザーは、これを空のままにしておいて、代わりに default_charset を設定すべきです。

mbstring.http_output string
警告

この機能は PHP 5.6.0 で 非推奨になります。この機能に頼らないことを強く推奨します。

HTTP 出力文字エンコーディングのデフォルト値を定義します (出力は、内部エンコーディングから HTTP 出力エンコーディングに変換された上で出力されます)。

PHP 5.6 以降のユーザーは、これを空のままにしておいて、代わりに default_charset を設定すべきです。

mbstring.detect_order string

文字コード検出のデフォルト値を定義します。 mb_detect_order()も参照ください。

mbstring.substitute_character string

無効な文字を代替する文字を定義します。

mbstring.func_overload string
警告

この機能は PHP 7.2.0 で 非推奨になります。この機能に頼らないことを強く推奨します。

シングルバイト対応の関数を mbstring 関数の対応する関数でオーバーロード (置換)します。詳細は、 関数のオーバーロード を参照してください。

この設定は、php.ini でしか変更できません。

mbstring.strict_detection boolean

厳密なエンコーディング検出を行います。

» HTML 4.01 の仕様 によると、Web ブラウザは、 フォームのデータを投稿する際にページで使用される文字エンコーディングと 異なるエンコーディングを使用することができます。 ブラウザで使用される文字エンコーディングを検出するには、 mb_http_input() を参照ください。

一般的に使用されるブラウザでは、 指定したHTML文書の文字エンコーディングをかなり正確に推定することができますが、 header() または設定パラメータ default_charset により、 Content-Type HTTP ヘッダで charset を設定する方がより良いでしょう。

例1 php.ini 設定の例

; デフォルトの言語を設定
mbstring.language        = neutral; デフォルト言語を中立(UTF-8)に設定 (デフォルト)
mbstring.language        = English; デフォルト言語を英語に設定
mbstring.language        = Japanese; デフォルト言語を日本語に設定

;; デフォルトの内部エンコーディングを設定
;; 注意: PHPで動作する文字エンコーディングを使用すること
mbstring.internal_encoding    = UTF-8  ; 内部エンコーディングを UTF-8 に設定

;; HTTP入力エンコーディング変換を有効にする
mbstring.encoding_translation = On

;; デフォルトのHTTP入力文字エンコーディングを設定
;; 注意: スクリプトではhttp_inputの設定は変更できません。
mbstring.http_input           = pass    ; 変換しない。
mbstring.http_input           = auto    ; HTTP 入力を auto に設定
                                ; "auto" は mbstring.language の設定を使って展開されます
mbstring.http_input           = SJIS    ; HTTP入力をSJISに設定
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; 順番を指定

;; デフォルトのHTTP出力文字エンコーディングを設定
mbstring.http_output          = pass    ; 変換しない
mbstring.http_output          = UTF-8   ; HTTP出力エンコーディングを
                                        ;  UTF-8 に指定

;; デフォルトの文字エンコーディング検出順序を設定
mbstring.detect_order         = auto    ; デフォルトの順番を auto に設定
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; 順番を指定

;; 代替文字のデフォルト値を設定
mbstring.substitute_character = 12307   ; Unicode 値を指定
mbstring.substitute_character = none    ; 文字を出力しない
mbstring.substitute_character = long    ; long の例: U+3000,JIS+7E7E

例2 EUC-JP ユーザー用の php.ini の設定

;; 出力バッファリングを無効にする
output_buffering      = Off

;; HTTP charsetヘッダを設定
default_charset       = EUC-JP    

;; デフォルトの言語を日本語にする
mbstring.language = Japanese

;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On

;; HTTP 入力エンコーディング変換を auto に設定
mbstring.http_input   = auto 

;; HTTP 出力を EUC-JP に設定
mbstring.http_output  = EUC-JP    

;; 内部エンコーディングを EUC-JP に設定
mbstring.internal_encoding = EUC-JP    

;; 無効な文字を出力しない
mbstring.substitute_character = none

例3 SJIS ユーザー用の php.iniの 設定

;; 出力のバッファリングを有効に
output_buffering     = On

;; 出力の変換を有効にするために mb_output_handler を設定
output_handler       = mb_output_handler

;; HTTPヘッダ charset を設定
default_charset      = Shift_JIS

;; デフォルトの言語を日本語に設定
mbstring.language = Japanese

;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On

;; HTTP 入力エンコーディング変換を auto に設定
mbstring.http_input  = auto 

;; SJIS に変換
mbstring.http_output = SJIS    

;; 内部エンコーディングを EUC-JP に設定
mbstring.internal_encoding = EUC-JP    

;; 無効な文字を出力しない
mbstring.substitute_character = none

add a note add a note

User Contributed Notes 1 note

up
-2
PRETTYGIRL NOT COMe
3 years ago
Note that you should better at least set "mbstring.internal_encoding".

Just check as below:

<?php

echo mb_internal_encoding() . '<br />';
echo
mb_regex_encoding();

?>

You might be surprised at unexpected values.

eg.

mbstring.language Japanese
;mbstring.internal_encoding (commented out showing "no value" in phpinfo() )

These two lines in "php.ini" are the same values as

mb_internal_encoding("EUC-JP");
mb_regex_encoding("EUC-JP");

in Win / Linux servers.

"mbstring.internal_encoding" defines the default encoding for "mb_" Functions such as "mb_strlen()".

It also defines the same for "mb_ereg_" Functions such as "mb_ereg()" when you don't set "mb_regex_encoding".
To Top