自己写了一个php检测文件编码的函数


Posted in PHP onApril 21, 2014

关于文件编码的检测,百度一下一大把都是,但是确实没有能用的、
很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出、
看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、
最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,
还包括自动检测编码并按指点编码读取文件的函数、
源码献上,不喜勿喷。
网上的方法我试过没用才写的,说不定环境不一样导致的。
所以万一没用,也别喷我,我只是共享想思路而已、、

<?php 
/** 
* 检测文件编码 
* @param string $file 文件路径 
* @return string|null 返回 编码名 或 null 
*/ 
function detect_encoding($file) { 
$list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'); 
$str = file_get_contents($file); 
foreach ($list as $item) { 
$tmp = mb_convert_encoding($str, $item, $item); 
if (md5($tmp) == md5($str)) { 
return $item; 
} 
} 
return null; 
} /** 
* 自动解析编码读入文件 
* @param string $file 文件路径 
* @param string $charset 读取编码 
* @return string 返回读取内容 
*/ 
function auto_read($file, $charset='UTF-8') { 
$list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'); 
$str = file_get_contents($file); 
foreach ($list as $item) { 
$tmp = mb_convert_encoding($str, $item, $item); 
if (md5($tmp) == md5($str)) { 
return mb_convert_encoding($str, $charset, $item); 
} 
} 
return ""; 
}
PHP 相关文章推荐
用PHP编写PDF文档生成器
Oct 09 PHP
推荐一篇入门级的Class文章
Mar 19 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
Php中文件下载功能实现超详细流程分析
Jun 13 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
Laravel实现表单提交
May 07 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP中有关长整数的一些操作教程
Sep 11 PHP
php的单例模式及应用场景详解
Feb 27 PHP
PHP执行系统命令函数实例讲解
Mar 03 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 #PHP
PHP5中实现多态的两种方法实例分享
Apr 21 #PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
Apr 21 #PHP
PHP正则提取不包含指定网址的图片地址的例子
Apr 21 #PHP
phpmyadmin打开很慢的解决方法
Apr 21 #PHP
PHP递归删除目录几个代码实例
Apr 21 #PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 #PHP
You might like
获得Google PR值的PHP代码
2007/01/28 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
python实现扫描ip地址的小程序
2019/04/16 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
浅析Python 多行匹配模式
2020/07/24 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
自荐信包含哪些内容
2013/10/30 职场文书
重阳节登山活动方案
2014/02/03 职场文书
职工代表大会主持词
2014/04/01 职场文书
就业推荐表导师评语
2014/12/31 职场文书
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js
mybatis 获取更新记录的id
2022/05/20 Java/Android