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 相关文章推荐
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
学习php笔记 字符串处理
Oct 19 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
php支付宝接口用法分析
Jan 04 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
php基础教程
Aug 26 PHP
Linux安装配置php环境的方法
Jan 14 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 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执行速度全攻略(下)
2006/10/09 PHP
ajax php 实现写入数据库
2009/09/02 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
python端口扫描系统实现方法
2014/11/19 Python
Python中文竖排显示的方法
2015/07/28 Python
python 系统调用的实例详解
2017/07/11 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
python 实现有道翻译功能
2021/02/26 Python
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
求职个人评价范文
2014/04/09 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL