php使用mb_check_encoding检查字符串在指定的编码里是否有效


Posted in PHP onNovember 07, 2013

mb_check_encoding — 检查字符串在指定的编码里是否有效
PHP 版本要求: (PHP 4 >= 4.4.3, PHP 5 >= 5.1.3)
说明:bool mb_check_encoding ([ string $var = NULL [, string $encoding = mb_internal_encoding() ]] )
检查指定的字节流在指定的编码里是否有效。它能有效避免所谓的“无效编码攻击(Invalid Encoding Attack)”。
参数
var
要检查的字节流。如果省略了这个参数,此函数会检查所有来自最初请求所有的输入。
encoding
期望的编码。
返回值
成功时返回 TRUE, 或者在失败时返回 FALSE。
为了检查是否一个字符串编码正确在utf - 8中,我建议以下函数实现 mb_check_encoding():

<?php 
function check_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; 
} // end of check_utf8 
?>
PHP 相关文章推荐
php开发工具之vs2005图解
Jan 12 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
php中对2个数组相加的函数
Jun 24 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
php时间戳转换的示例
Mar 31 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
yii框架搜索分页modle写法
Dec 19 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 #PHP
php去除HTML标签实例
Nov 06 #PHP
php实现监听事件
Nov 06 #PHP
php生成扇形比例图实例
Nov 06 #PHP
php多用户读写文件冲突的解决办法
Nov 06 #PHP
php生成图形(Libchart)实例
Nov 06 #PHP
php ZipArchive压缩函数详解实例
Nov 06 #PHP
You might like
PHP实现事件机制的方法
2015/07/10 PHP
tagName的使用,留一笔
2006/06/26 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python基于twisted实现简单的web服务器
2014/09/29 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
python基础之入门必看操作
2017/07/26 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
python 深度学习中的4种激活函数
2020/09/18 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
社区十八大感言
2014/01/19 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
2014年环卫工作总结
2014/11/22 职场文书
讲文明倡议书
2015/04/29 职场文书
如何撰写促销方案?
2019/07/05 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android