自己写了一个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 项目的方法
Jan 02 PHP
apache mysql php 源码编译使用方法
May 03 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
php调用c接口无错版介绍
Mar 11 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
Thinkphp无限级分类代码
Nov 11 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
yii2的restful api路由实例详解
May 14 PHP
php中yar框架实例用法讲解
Dec 27 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中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
php修改数组键名的方法示例
2017/04/15 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
宣传工作经验材料
2014/06/02 职场文书
大学生毕业求职信
2014/06/12 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
2015选调生工作总结
2015/07/24 职场文书
认识实习感想
2015/08/10 职场文书
关于教师节的广播稿
2015/08/19 职场文书
python单元测试之pytest的使用
2021/06/07 Python
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL