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调用数据库的存贮过程
Oct 09 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
Dec 05 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
php堆排序(heapsort)练习
Nov 13 PHP
php+highchats生成动态统计图
May 21 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
php-msf源码详解
Dec 25 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
PHP保留两位小数的几种方法
Jul 24 PHP
PHP连续签到功能实现方法详解
Dec 04 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 类型转换函数intval
2009/06/20 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
javascript每日必学之多态
2016/02/23 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python中的TCP socket写法示例
2018/05/11 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
详解python对象之间的交互
2020/09/29 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
客房主管岗位职责
2013/12/09 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
毕业生自荐信范文
2015/03/05 职场文书
大学新生入学感想
2015/08/07 职场文书
九年级历史教学反思
2016/02/19 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL