自己写了一个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 20 PHP
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
PHP empty函数报错解决办法
Mar 06 PHP
php文件上传简单实现方法
Jan 24 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
PHP实现过滤各种HTML标签
May 17 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
Zend Studio使用技巧两则
Apr 01 PHP
PHP中->和=>的意思
Mar 31 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 向访客和爬虫显示不同的内容
2009/11/09 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
javascript调试说明
2010/06/07 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
Python之列表实现栈的工作功能
2019/01/28 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
竞选村长演讲稿
2014/04/28 职场文书
会计电算化专业求职信
2014/06/10 职场文书
农村文化活动总结
2014/08/28 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
道歉情书大全
2015/05/12 职场文书
中学语文教学反思
2016/02/16 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫