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 相关文章推荐
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
一个简单的PHP投票程序源码
Mar 11 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
PHP中数组的三种排序方法分享
May 07 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
PHP中的类型约束介绍
May 11 PHP
php封装的表单验证类完整实例
Oct 19 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
Laravel登录失败次数限制的实现方法
Aug 26 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中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
重学JS之显示强制类型转换详解
2019/06/30 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python中文字符串截取问题
2015/06/15 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
简单了解python关系(比较)运算符
2019/07/08 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
PHP笔试题
2012/02/22 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
会计电算化专业自荐信
2014/03/15 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
2015年司机工作总结
2015/04/23 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技