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 相关文章推荐
第五节--克隆
Nov 16 PHP
PHP句法规则详解 入门学习
Nov 09 PHP
PHP中new static()与new self()的区别异同分析
Aug 22 PHP
Yii框架登录流程分析
Dec 03 PHP
php rsa加密解密使用详解
Jan 14 PHP
php判断用户是否手机访问代码
Jun 08 PHP
CodeIgniter使用smtp服务发送html邮件的方法
Jun 10 PHP
PHP实现的购物车类实例
Jun 17 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
php获取微信openid方法总结
Oct 10 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
JS 自动安装exe程序
2008/11/30 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
微信小程序云开发详细教程
2019/05/16 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
React实现todolist功能
2020/12/28 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
python安装与使用redis的方法
2016/04/19 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
django 单表操作实例详解
2019/07/30 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
自荐书范文
2013/12/08 职场文书
学习心得体会
2014/01/01 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
九不准学习心得体会
2016/01/23 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
nginx安装以及配置的详细过程记录
2021/09/15 Servers
再谈python_tkinter弹出对话框创建
2022/03/20 Python