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函数
Dec 06 PHP
php miniBB中文乱码问题解决方法
Nov 25 PHP
php 注释规范
Mar 29 PHP
thinkphp 多表 事务详解
Jun 17 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 PHP
PHP反射基础知识回顾
Sep 10 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
PHP整合PayPal支付
2015/06/11 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
python聊天程序实例代码分享
2013/11/18 Python
python33 urllib2使用方法细节讲解
2013/12/03 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python障碍式期权定价公式
2019/07/19 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
保险经纪人求职信
2014/03/11 职场文书
质量标语大全
2014/06/12 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android