美高梅网址注册-澳门mgm4858集团登录网址
做最好的网站
来自 澳门mgm4858集团登录网址 2020-01-15 03:57 的文章
当前位置: 美高梅网址注册 > 澳门mgm4858集团登录网址 > 正文

检测字符串编码可以有很多种方法,下面帖出这

后来又在手册上找到了is_utf8函数,这样,再结合iconv函数,我的问题就解决了。下面帖出这个函数: 复制代码 代码如下:function is_utf8 { return preg_match('%^(?: [x09x0Ax0Dx20-x7E] # ASCII | [xC2-xDF][x80-xBF] # non-overlong 2-byte | xE0[xA0-xBF][x80-xBF] # excluding overlongs | [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte | xED[x80-x9F][x80-xBF] # excluding surrogates | xF0[x90-xBF][x80-xBF]{2} # planes 1-3 | [xF1-xF3][x80-xBF]{3} # planes 4-15 | xF4[x80-x8F][x80-xBF]{2} # plane 16 )*$%xs', $string); } // function is_utf8 如果想深入研究,建议看下PHP手册上的“Multibyte String Functions”这一部分的内容。

本文实例总结了PHP检测字符串是否为UTF8编码的常用方法。分享给大家供大家参考。具体实现方法如下:

检测字符串编码可以有很多种方法,如利用ord获得字符的进制然后进入判断,或利用mb_detect_encoding函数来处理,下面整理了四种常用方法供大家参考。

例子1复制代码 代码如下:/*** 检测字符串是否为UTF8编码* @param string $str 被检测的字符串* @return boolean*/function is_utf8{$len = strlen;for($i = 0; $i < $len; $i++){$c = ord;if {if return false;elseif $bytes = 4;elseif $bytes = 3;elseif $bytes = 2;else return false;if return false;while {$i++;$b = ord;if return false;$bytes--;}}}return true;}例子2复制代码 代码如下:function is_utf8 { return preg_match('%^(?: [x09x0Ax0Dx20-x7E] # ASCII | [xC2-xDF][x80-xBF] # non-overlong 2-byte | xE0[xA0-xBF][x80-xBF] # excluding overlongs | [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte | xED[x80-x9F][x80-xBF] # excluding surrogates | xF0[x90-xBF][x80-xBF]{2} # planes 1-3 | [xF1-澳门mgm4858集团登录网址,xF3][x80-xBF]{3} # planes 4-15 | xF4[x80-x8F][x80-xBF]{2} # plane 16 )*$%xs', $string); }准确率基本和mb_detect_encoding()一样,要对一起对,要错一起错。 编码检测不可能100%准确,这个东西已经可以基本满足要求了。例子3复制代码 代码如下:function mb_is_utf8 { return mb_detect_encoding === 'UTF-8';//新发现 }

本文由美高梅网址注册发布于澳门mgm4858集团登录网址,转载请注明出处:检测字符串编码可以有很多种方法,下面帖出这

关键词: