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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
php在文件指定行中写入代码的方法
May 23 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
PHP常用的小程序代码段
Nov 14 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
destoon之一键登录设置
2014/06/21 PHP
php随机抽奖实例分析
2015/03/04 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
jQuery的一些注意
2006/12/06 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
js实现自定义右键菜单
2020/05/18 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
python实现图像识别功能
2018/01/29 Python
python爬取网页转换为PDF文件
2018/06/07 Python
python实现汉诺塔算法
2021/03/01 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
python计算二维矩形IOU实例
2020/01/18 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
《称象》教学反思
2014/04/25 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
vue中 this.$set的使用详解
2021/11/17 Vue.js
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL