php 判断字符串编码是utf-8 或gb2312实例


Posted in PHP onNovember 01, 2016

php 判断字符串编码是utf-8 或gb2312

第一种方法:

function is_gb2312($str)
{
    for($i=0; $i<strlen($str); $i++) {
        $v = ord( $str[$i] );
        if( $v > 127) {
            if( ($v >= 228) && ($v <= 233) )
            {
                if( ($i+2) >= (strlen($str) - 1)) return true; // not enough characters
                $v1 = ord( $str[$i+1] );
                $v2 = ord( $str[$i+2] );
                if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf编码
                    return false;
                else
                    return true;
            }
        }
    }
    return true;
}

第二种方法:

/**
 * 判断字符串是utf-8 还是gb2312
 * @param unknown $str
 * @param string $default
 * @return string
 */
public static function utf8_gb2312($str, $default = 'gb2312')
{
 $str = preg_replace("/[\x01-\x7F]+/", "", $str);
 if (empty($str)) return $default;

 $preg = array(
 "gb2312" => "/^([\xA1-\xF7][\xA0-\xFE])+$/", //正则判断是否是gb2312
 "utf-8" => "/^[\x{4E00}-\x{9FA5}]+$/u",   //正则判断是否是汉字(utf8编码的条件了),这个范围实际上已经包含了繁体中文字了
 );

 if ($default == 'gb2312') {
 $option = 'utf-8';
 } else {
 $option = 'gb2312';
 }

 if (!preg_match($preg[$default], $str)) {
 return $option;
 }
 $str = @iconv($default, $option, $str);

 //不能转成 $option, 说明原来的不是 $default
 if (empty($str)) {
 return $option;
 }
 return $default;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
PHP在Web开发领域的优势
Oct 09 PHP
如何开发一个虚拟域名系统
Oct 09 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
php 操作符与控制结构
Mar 07 PHP
php中拷贝构造函数、赋值运算符重载
Jul 25 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
ThinkPHP发送邮件示例代码
Oct 08 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 #PHP
PHP实现小偷程序实例
Oct 31 #PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 #PHP
利用php做服务器和web前端的界面进行交互
Oct 31 #PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 #PHP
PDO的安全处理与事物处理方法
Oct 31 #PHP
PHP仿微信发红包领红包效果
Oct 30 #PHP
You might like
我的论坛源代码(二)
2006/10/09 PHP
PHP注释实例技巧
2008/10/03 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
中学实习教师自我鉴定
2013/12/12 职场文书
2014年实习期工作总结
2014/11/27 职场文书
房地产项目合作意向书
2015/05/08 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle
业余无线电通联Q语
2022/02/18 无线电