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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
GD输出汉字的函数的分析
Oct 09 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
html静态页面调用php文件的方法
Nov 13 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
Paypal实现循环扣款(订阅)功能
Mar 23 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 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框架Swoole定时器Timer特性分析
2014/08/19 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python 元类实例解析
2018/04/04 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
树莓派实现移动拍照
2019/06/22 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
python内置模块collections知识点总结
2019/12/19 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
创业计划书如何吸引他人眼球
2014/01/10 职场文书
教师教育心得体会
2016/01/19 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android