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多用户计数器代码
Mar 11 PHP
Zend Guard一些常见问题解答
Sep 11 PHP
PHP Stream_*系列函数
Aug 01 PHP
PHP isset()与empty()的使用区别详解
Aug 29 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
php使用yield对性能提升的测试实例分析
Sep 19 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学习的路线图
2013/07/10 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
Python中asyncore的用法实例
2014/09/29 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
python with (as)语句实例详解
2020/02/04 Python
如何理解python面向对象编程
2020/06/01 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
应届生财务管理求职信
2013/11/06 职场文书
学生宿舍管理制度
2014/01/30 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
教书育人演讲稿
2014/09/11 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
八项规定整改方案
2014/10/01 职场文书
普通党员个人整改措施
2014/10/27 职场文书
消防演习通知
2015/04/25 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书