自己写了一个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创建动态图像
Oct 09 PHP
深入PHP与浏览器缓存的分析
Jun 03 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
适合PHP初学者阅读的4本经典书籍
Sep 23 PHP
php封装的mysqli类完整实例
Oct 18 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
imagettftext() 失效,不起作用
Mar 09 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企业级应用之常见缓存技术篇
2011/01/27 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
php实现网页端验证码功能
2017/07/11 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
javascript测试题练习代码
2012/10/10 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
SVG实现时钟效果
2018/07/17 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
python中set()函数简介及实例解析
2018/01/09 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python join()函数原理及使用方法
2020/11/14 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
市场营销方案范文
2014/03/11 职场文书
离职保密承诺书
2014/05/28 职场文书
会计个人实习计划书
2014/08/15 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android