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.MVC的模板标签系统(二)
Sep 05 PHP
推荐文章系统(一)
Oct 09 PHP
如何在PHP中进行身份认证
Oct 09 PHP
php生成随机密码的三种方法小结
Sep 04 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
Sep 16 PHP
ThinkPHP模板输出display用法分析
Nov 26 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
自制PHP框架之模型与数据库
May 07 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
Dec 13 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强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
Javascript 面向对象特性
2009/12/28 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
js倒计时显示实例
2016/12/11 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python实现基本进制转换的方法
2015/07/11 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
夜大毕业生自我鉴定
2013/10/31 职场文书
企业给企业的表扬信
2014/01/13 职场文书
庆六一活动总结
2014/08/29 职场文书
通知函的格式
2015/04/27 职场文书
为自己工作观后感
2015/06/11 职场文书