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&&mysql)一
Oct 09 PHP
php中存储用户ID和密码到mysql数据库的方法
Feb 06 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
php 解析非标准json、非规范json
Apr 01 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
php ZipArchive压缩函数详解实例
2013/11/06 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
详解K-means算法在Python中的实现
2017/12/05 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
怎么快速自学python
2020/06/22 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
电力安全事故反思
2014/04/27 职场文书
捐书活动总结
2014/05/04 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
预备党员群众意见
2015/06/01 职场文书
考试后的感想
2015/08/07 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript