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 相关文章推荐
php二分法在IP地址查询中的应用
Aug 12 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
php去除数组中重复数据
Nov 18 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
数字转英文
2006/12/06 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
python实现图片处理和特征提取详解
2017/11/13 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
python3字符串操作总结
2019/07/24 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
土建资料员岗位职责
2014/01/04 职场文书
生物学学生自我评价
2014/01/17 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
学生会竞聘书范文
2014/03/31 职场文书
食品工程专业求职信
2014/06/15 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
寒假安全保证书
2015/02/28 职场文书
报案材料怎么写
2015/05/25 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS