php – mbstring.strict_detection有什么作用?

mbstring PHP模块有一个strict_detection设置,documented here.不幸的是,手册完全没用;它只说这个选项“启用严格的编码检测”.

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

(编辑:)在PHP 5.1.2中添加了mbstring.strict_detection选项.

解决方法:

如果没有设置严格的参数,编码检测会更快,但不会那么准确.例如,如果你有一个带有部分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.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...