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 相关文章推荐
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
深入Memcache的Session数据的多服务器共享详解
Jun 13 PHP
php实现微信公众平台账号自定义菜单类
Dec 02 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
详解PHP中的状态模式编程
Aug 11 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
php实现的一段简单概率相关代码
May 30 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 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
PHP中单引号与双引号的区别分析
2014/08/19 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
js注意img图片的onerror事件的分析
2011/01/01 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
python 文件操作api(文件操作函数)
2016/08/28 Python
windows下ipython的安装与使用详解
2016/10/20 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python判断设备是否联网的方法
2018/06/29 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
python变量的作用域是什么
2020/05/26 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
接口可以包含哪些成员
2012/09/30 面试题
优秀党员主要事迹范文
2015/11/05 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
汉语拼音教学反思
2016/02/22 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python