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


Posted in PHP onNovember 21, 2014

本文实例总结了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程序设计有所帮助。

PHP 相关文章推荐
php中数据的批量导入(csv文件)
Oct 09 PHP
Mysql的常用命令
Oct 09 PHP
php echo 输出字符串函数详解
May 13 PHP
在VS2008中编译MYSQL5.1.48的方法
Jul 03 PHP
PHP动态分页函数,PHP开发分页必备啦
Nov 07 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
php防止恶意刷新与刷票的方法
Nov 21 #PHP
php采用curl实现伪造IP来源的方法
Nov 21 #PHP
php文件缓存类汇总
Nov 21 #PHP
php实现事件监听与触发的方法
Nov 21 #PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 #PHP
IIS下PHP的三种配置方式对比
Nov 20 #PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 #PHP
You might like
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
smarty的保留变量问题
2008/10/23 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
传智播客学习之java 反射
2009/11/22 Javascript
chrome原生方法之数组
2011/11/30 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Django websocket原理及功能实现代码
2020/11/14 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
淘宝活动策划方案
2014/02/06 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
体育节口号
2014/06/19 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2014年班级工作总结
2014/11/14 职场文书
申请吧主发表的感言
2015/08/03 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书