自己写了一个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 相关文章推荐
配置支持SSI
Nov 25 PHP
PHP中,文件上传
Dec 06 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
处理php自动反斜杠的函数代码
Jan 05 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
php模板原理讲解
Nov 13 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
php格式化日期实例分析
Nov 12 PHP
php动态变量定义及使用
Jun 10 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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
十大“创意”战术!
2020/03/04 星际争霸
桌面中心(四)数据显示
2006/10/09 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
Vuex提升学习篇
2018/01/11 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
javascript实现留言板功能
2020/02/08 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
Python利用ansible分发处理任务
2015/08/04 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python实现ip代理池功能示例
2019/07/05 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
绩效考核实施方案
2014/03/18 职场文书
10的分与合教学反思
2014/04/30 职场文书
行政经理岗位职责
2015/04/15 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
初三数学教学反思
2016/02/17 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
Oracle中DBLink的详细介绍
2022/04/29 Oracle