自己写了一个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 fckeditor 调用的函数
Jun 21 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
PHP之数组学习
May 29 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
php curl获取网页内容(IPV6下超时)的解决办法
Jul 16 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
php实现阳历阴历互转的方法
Oct 28 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 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模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
C#中的验证控件有几种
2014/03/08 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
土建资料员岗位职责
2014/01/04 职场文书
企业年度评优方案
2014/06/02 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
学习考察心得体会
2014/09/04 职场文书
计划生育证明格式范本
2014/09/12 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL