自己写了一个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 相关文章推荐
拼音码表的生成
Oct 09 PHP
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
程序员编程十条戒律
Jul 09 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
PHP设计模式之调解者模式的深入解析
Jun 13 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
php生成word并下载代码实例
Mar 15 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 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
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
JavaScript效率调优经验
2009/06/04 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
以windows service方式运行Python程序的方法
2015/06/03 Python
Python的多态性实例分析
2015/07/07 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
pyhton列表转换为数组的实例
2018/04/04 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
软件工程师面试题
2012/06/25 面试题
办公室文秘自我评价
2013/09/21 职场文书
临床医师专业个人自我评价范文
2013/11/07 职场文书
拓展培训心得体会
2014/01/04 职场文书
民事授权委托书范文
2014/08/02 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
小学毕业感言200字
2015/07/30 职场文书