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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
快速配置PHPMyAdmin方法
Jun 05 PHP
PHP 图片上传代码
Sep 13 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
php获取服务器操作系统相关信息的方法
Oct 08 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 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/08/15 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
解析jquery中的ajax缓存问题
2013/12/19 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
Mac下安装vue
2018/04/11 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
简单介绍Python中的RSS处理
2015/04/13 Python
python3实现多线程聊天室
2018/12/12 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
详解px单位html5响应式方案
2018/03/08 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
工会趣味活动方案
2014/08/18 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
学校教学管理制度
2015/08/06 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python