自己写了一个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中文汉字验证码
Apr 08 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
19个Android常用工具类汇总
Dec 30 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
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实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
jQuery插件开发全解析
2012/10/10 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
vue实现表单录入小案例
2019/09/27 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
python实现最长公共子序列
2018/05/22 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
pytorch方法测试——激活函数(ReLU)详解
2020/01/15 Python
python初步实现word2vec操作
2020/06/09 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
Delphi工程师笔试题
2013/09/21 面试题
刑事上诉状(无罪)
2015/05/23 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python