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 相关文章推荐
提取HTML标签
Oct 09 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
php多文件上传实现代码
Feb 20 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
PHP中的日期加减方法示例
Aug 21 PHP
PHP Reflection API详解
May 12 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
laravel通用化的CURD的实现
Dec 13 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
Python ftp上传文件
2016/02/13 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
英国现代绅士品牌:Hackett
2017/12/17 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
入党申请书自我鉴定
2013/10/12 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
行政答辩状范文
2015/05/21 职场文书
同意报考证明
2015/06/17 职场文书
2015年依法治校工作总结
2015/07/27 职场文书