php自动识别文字编码并转换为目标编码的方法


Posted in PHP onAugust 08, 2015

本文实例讲述了php自动识别文字编码并转换为目标编码的方法。分享给大家供大家参考。具体如下:

在PHP处理页面的时候,我们对于字符集的转换都是采用了iconv或者mb_convert等函数,但,这其实是有一个前提的。即我们事先得知道in和out是什么样的编码,我们才能进行正确的转换。

虽然大多数转换都是在gbk和utf-8之间转,但如果不知道转换对象的编码怎么办呢?谷歌出来这么一个函数safeEncoding,可以简单的识别UTF8和GBK的编码。这个函数在一定程度上识别的很准确,但是在一些比较复杂的环境中就不是那么的好用了. 下面我结合了GBK和UTF-8编码的不同点,使用正则表达式来判断UTF-8编码并使用mb_convert_encoding函数来进行转换. 在国内,基本上比较流行的编码就是GBK和UTF-8, 所以这个函数是针对这两个编码进行自动转换的.

/**
* @ string 需要转换的文字
* @ encoding 目标编码
**/
function detect_encoding($string,$encoding = 'gbk'){
 $is_utf8 = preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E]| [\xC2-\xDF][\x80-\xBF]| \xE0[\xA0-\xBF][\x80-\xBF] | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  | \xED[\x80-\x9F][\x80-\xBF] | \xF0[\x90-\xBF][\x80-\xBF]{2} | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2} )*$%xs', $string);
 if($is_utf8 && $encoding == 'utf8'){
  return $string;
 }elseif($is_utf8){
  return mb_convert_encoding($string, $encoding, "UTF-8");
 }else{
  return mb_convert_encoding($string, $encoding, 'gbk,gb2312,big5');
 }
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php简单封装了一些常用JS操作
Feb 25 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
在Yii框架中使用PHP模板引擎Twig的例子
Jun 13 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
php随机获取金山词霸每日一句的方法
Jul 09 PHP
PHP代码优化技巧小结
Sep 29 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 PHP
PHP模拟asp中response类实现方法
Aug 08 #PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 #PHP
PHP中使用curl伪造IP的简单方法
Aug 07 #PHP
smarty中常用方法实例总结
Aug 07 #PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 #PHP
PHP下载生成的csv文件及问题总结
Aug 06 #PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 #PHP
You might like
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
jQuery使用方法
2017/02/04 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
便捷提取python导入包的属性方法
2018/10/15 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
详解Python做一个名片管理系统
2019/03/14 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
python set内置函数的具体使用
2019/07/02 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
花卉与景观设计系大学生求职信
2013/10/01 职场文书
女娲补天教学反思
2014/02/05 职场文书
施工安全汇报材料
2014/08/17 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
2014年团委工作总结
2014/11/13 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
HTML常用标签超详细整理
2022/03/19 HTML / CSS