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 相关文章推荐
一个可以找出源代码中所有中文的工具
Oct 25 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
PHP魔术方法的使用示例
Jun 23 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
Aug 28 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 PHP
php将html转为图片的实现方法
May 19 PHP
PHP实现找出链表中环的入口节点
Jan 16 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
flash用php连接数据库的代码
2011/04/21 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
AngularJS基础知识
2014/12/21 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
新西兰优惠网站:Treat Me
2019/07/04 全球购物
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
演讲稿祖国在我心中
2014/05/04 职场文书
环保倡议书范文
2014/05/12 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
浅谈Python中对象是如何被调用的
2022/04/06 Python