• 技术文章 >后端开发 >php教程

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

    2016-05-16 20:30:56原创473

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

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

    例子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('%^(?:
    [\x09\x0A\x0D\x20-\x7E] # ASCII
    | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
    | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
    | [\xE1-\xEC\xEE\xEF][\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程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 检测 字符串 UTF8 编码
    上一篇:php常用数学函数汇总_php技巧 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文详解PHP实现职责链设计模式(附代码示例)• php实现通过JSON RPC与go通讯(附代码)• 浅析怎么使用PHP做异步爬取数据• PHP8.3要有新函数了!(json_validate函数说明)• 设计API接口时,要注意这些地方!
    1/1

    PHP中文网