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 图片上传实现代码 带详细注释
Apr 29 PHP
php中防止恶意刷新页面的代码小结
Oct 31 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
PHP读取文件内容后清空文件示例代码
Mar 18 PHP
给ECShop添加最新评论
Jan 07 PHP
thinkphp实现图片上传功能
Jan 13 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
yii2多图上传组件的使用教程
May 10 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
PHP大文件分割分片上传实现代码
Dec 09 PHP
PHP7新增函数
Mar 09 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
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
优秀员工表扬信
2014/01/17 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
个人函授自我鉴定
2014/03/25 职场文书
年会搞笑主持词
2014/03/27 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
部门2014年度工作总结
2014/11/12 职场文书
拖欠货款起诉状
2015/05/20 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
Go获取两个时区的时间差
2022/04/20 Golang
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript