php检测文件编码的方法示例


Posted in PHP onApril 25, 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 相关文章推荐
杏林同学录(一)
Oct 09 PHP
PHP新手上路(十一)
Oct 09 PHP
php自动加载的两种实现方法
Jun 21 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
redis 队列操作的例子(php)
Apr 12 PHP
php 启动时报错的简单解决方法
Jan 27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
PHP实现加密的几种方式介绍
Feb 22 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
PHP 实现重载
Mar 09 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 #PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 #PHP
php除数取整示例
Apr 24 #PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 #PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 #PHP
php smarty模板引擎的6个小技巧
Apr 24 #PHP
PHP中使用smarty生成静态文件的例子
Apr 24 #PHP
You might like
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
php图片裁剪函数
2018/10/31 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
js读取cookie方法总结
2014/10/31 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
Python数据结构之Array用法实例
2014/10/09 Python
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python实现多线程网页下载器
2018/04/15 Python
利用python画出折线图
2018/07/26 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
wxpython绘制圆角窗体
2019/11/18 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
银行实习人员自我鉴定
2013/09/22 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
英语系本科生求职信
2014/07/15 职场文书
运动员代表致辞
2015/07/29 职场文书
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers