这个问题询问如何检测 UTF-8 字符串 -如何检测是否必须对字符串应用 utf8 解码或编码? https://stackoverflow.com/questions/4407854/
解决方案是这样的:
if (preg_match('!!u', $string))
{
// this is utf-8
}
else
{
// definitely not utf-8
}
我一直无法弄清楚如何分解“!!u”表达式。我点击了所有 PHP 的 PCRE 内容,可能错过了“!”的描述。标记和“u”之类的东西。我尝试通过 perl 的 YAPE::Regex::Explain 运行它(如请解释一下这个 Perl 正则表达式 https://stackoverflow.com/questions/381157/please-explain-this-perl-regular-expression/381175#381175)并且无法得到有意义的东西[我不是 Perl 专家 - 不知道我是否给它提供了正确的表达式/字符串]。
那么...具体是怎样的preg_match('!!u', $string)
work?
它只是一个空的正则表达式。!
is the 分隔符 http://www.php.net/manual/en/regexp.reference.delimiters.php and u
is the modfier http://php.net/manual/en/reference.pcre.pattern.modifiers.php.
至于为什么会起作用,来自PHP手册的描述u
修饰符(强调我的):
此修饰符打开与 Perl 不兼容的 PCRE 附加功能。模式字符串被视为 UTF-8。此修饰符在 Unix 上的 PHP 4.1.0 或更高版本以及 win32 上的 PHP 4.2.3 中可用。检查模式的 UTF-8 有效性从 PHP 4.3.5 开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)