6

mbstring PHP モジュールには、ここstrict_detectionに記載されている設定があります。残念ながら、マニュアルはまったく役に立ちません。このオプションは「厳密なエンコーディング検出を有効にする」とだけ言っています。

いくつかのテストを行いましたが、mbstring 関数がこれによってどのように影響を受けるかを見つけることができませんでした。mb_check_encoding()有効な UTF-8 入力とmb_detect_encoding()無効な UTF-8 入力の両方に対してまったく同じ結果が得られます。

(編集:) このmbstring.strict_detectionオプションは PHP 5.1.2 で追加されました。

4

1 に答える 1

6

厳密なパラメーターが設定されていない場合、エンコードの検出は高速になりますが、正確ではなくなります。たとえば、次のような部分的な UTF-8 シーケンスを持つ UTF-8 文字列があるとします。

$s = "H\xC3\xA9ll\xC3";
$encoding = mb_detect_encoding($s, mb_detect_order(), false);

mb_detect_encoding有効な UTF-8 ではありませんが (最後の文字が不完全です) 、呼び出しの結果は「UTF-8」になります。

ただし、strictパラメータを true に設定すると...

$s = "H\xC3\xA9ll\xC3";
$encoding = mb_detect_encoding($s, mb_detect_order(), true);

より徹底的なチェックを実行し、その呼び出しの結果は FALSE になります。

于 2013-07-30T22:36:08.740 に答える