mbstring.strict_detection有什么作用?

时间:2013-07-30 22:00:17

标签: php configuration mbstring

mbstring PHP模块的strict_detection设置为documented here。不幸的是,手册完全没用;它只表示此选项“启用严格编码检测”

我做了一些测试,无法找到任何mbstring函数如何受此影响。 mb_check_encoding()mb_detect_encoding()为有效和无效的UTF-8输入提供完全相同的结果。

(edit :)在PHP 5.1.2中添加了mbstring.strict_detection选项。

1 个答案:

答案 0 :(得分:5)

如果未设置 strict 参数,编码检测速度会更快,但不会那么准确。例如,如果您有一个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。