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图片验证码代码
Mar 27 PHP
php输出表格的实现代码(修正版)
Dec 29 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
PHP上传文件参考配置大文件上传
Dec 16 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
php可变长参数处理函数详解
Feb 22 PHP
Thinkphp5行为使用方法汇总
Dec 21 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
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
javascript call和apply方法
2008/11/24 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
Python中的作用域规则详解
2015/01/30 Python
Python对象转换为json的方法步骤
2019/04/25 Python
python定时任务 sched模块用法实例
2019/11/04 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
办理退休介绍信
2014/01/09 职场文书
技能比赛获奖感言
2014/02/14 职场文书
教学评估实施方案
2014/03/16 职场文书
报关报检委托书
2014/04/08 职场文书
单位活动策划方案
2014/08/17 职场文书
报名委托书
2015/01/29 职场文书
2015年大学生工作总结
2015/04/21 职场文书
撤诉状格式范本
2015/05/19 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
大学生活感想
2015/08/10 职场文书