加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP检测字符串是否为UTF8编码的常用方法

发布时间:2020-12-13 02:11:41 所属栏目:PHP教程 来源:网络整理
导读:《PHP检测字符串是否为UTF8编码的常用方法》要点: 本文介绍了PHP检测字符串是否为UTF8编码的常用方法,希望对您有用。如果有疑问,可以联系我们。 本文实例总结了PHP检测字符串是否为UTF8编码的常用办法.供大家参考研究.具体实现办法如下: PHP实战

《PHP检测字符串是否为UTF8编码的常用方法》要点:
本文介绍了PHP检测字符串是否为UTF8编码的常用方法,希望对您有用。如果有疑问,可以联系我们。

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

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

例子1
PHP实战

代码如下:
/**
* 检测字符串是否为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
PHP实战

代码如下:
// 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全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读