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 相关文章推荐
15种PHP Encoder的比较
Mar 06 PHP
php查看session内容的函数
Aug 27 PHP
php array_flip() 删除数组重复元素
Jan 14 PHP
PHP 万年历实现代码
Oct 18 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
PHP会话处理的10个函数
Aug 11 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 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
967 个函式
2006/10/09 PHP
由php if 想到的些问题
2008/03/22 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
php如何获取Http请求
2020/04/30 PHP
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
python解析文件示例
2014/01/23 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
Python多线程获取返回值代码实例
2020/02/17 Python
Django权限设置及验证方式
2020/05/13 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
我的长生果教学反思
2014/04/28 职场文书
上班离岗检讨书
2014/09/10 职场文书
初中学生操行评语
2014/12/26 职场文书
婚礼家长致辞
2015/07/27 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python