源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-08-23 04:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP检测字符串是否为UTF8编码的常用方法
本文实例总结了PHP检测字符串是否为UTF8编码的常用方法。分享给大家供大家参考。具体实现方法如下: 检测字符串编码可以有很多种方法,如利用ord获得字符的进制然后进入判断,或利用mb_detect_encoding函数来处理,下面整理了四种常用方法供大家参考。 例子1
[u]复制代码[/u] 代码如下:
/** * 检测字符串是否为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
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
function mb_is_utf8($string)   {       return mb_detect_encoding($string, 'UTF-8') === 'UTF-8';//新发现   }
例子4
[u]复制代码[/u] 代码如下:
// 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程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部