PHP检测字符串是否为UTF8编码的常用方法
发布时间:2020-12-13 02:11:41 所属栏目:PHP教程 来源:网络整理
导读:《PHP检测字符串是否为UTF8编码的常用方法》要点: 本文介绍了PHP检测字符串是否为UTF8编码的常用方法,希望对您有用。如果有疑问,可以联系我们。 本文实例总结了PHP检测字符串是否为UTF8编码的常用办法.供大家参考研究.具体实现办法如下: PHP实战
《PHP检测字符串是否为UTF8编码的常用方法》要点: 本文实例总结了PHP检测字符串是否为UTF8编码的常用办法.分享给大家供大家参考.具体实现办法如下:PHP实战 检测字符串编码可以有很多种办法,如利用ord获得字符的进制然后进入判断,或利用mb_detect_encoding函数来处理,下面整理了四种常用办法供大家参考.PHP实战 例子1
代码如下:
/**
* 检测字符串是否为UTF8编码 * @param string $str 被检测的字符串 * @return boolean */ function is_utf8($str){ $len = strlen($str); for($i = 0; $i < $len; $i++){ $c = ord($str[$i]); if ($c > 128) { if (($c > 247)) return false; elseif ($c > 239) $bytes = 4; elseif ($c > 223) $bytes = 3; elseif ($c > 191) $bytes = 2; else return false; if (($i + $bytes) > $len) return false; while ($bytes > 1) { $i++; $b = ord($str[$i]); if ($b < 128 || $b > 191) return false; $bytes--; } } } return true; } 例子2
代码如下:
function is_utf8($string) {
???? 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);????? } 准确率基本和mb_detect_encoding()一样,要对一起对,要错一起错. 编码检测不可能100%准确,这个东西已经可以基本满足要求了. 例子3
代码如下:
function mb_is_utf8($string)??
{?? ??? return mb_detect_encoding($string,'UTF-8') === 'UTF-8';//新发现?? } 例子4
代码如下:
// Returns true if $string is valid UTF-8 and false otherwise.??
function is_utf8($word)?? {?? if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true)?? {?? return true;?? }?? else?? {?? return false;?? }?? } // function is_utf8 希望本文所述对大家的PHP程序设计有所赞助.PHP实战 编程之家培训学院每天发布《PHP检测字符串是否为UTF8编码的常用方法》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |