自己写了一个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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
php 不使用js实现页面跳转
Feb 11 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
Smarty3配置及入门语法
Feb 22 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
TP3.2.3框架文件上传操作实例详解
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处理整数函数的详解
2013/06/09 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
python实现简单tftp(基于udp协议)
2018/07/30 Python
django celery redis使用具体实践
2019/04/08 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
Python何时应该使用Lambda函数
2019/07/02 Python
python opencv调用笔记本摄像头
2019/08/28 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
查看keras的默认backend实现方式
2020/06/19 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
Laravel中Kafka的使用详解
2021/03/24 PHP
拉丁舞学习者的自我评价
2013/10/27 职场文书
校园十大歌手策划书
2014/02/01 职场文书
继承公证书样本
2014/04/04 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
比赛主持人开场白
2015/05/29 职场文书
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python