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中文本操作的类
Mar 17 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
destoon常用的安全设置概述
Jun 21 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
PHP+jquery实时显示网站在线人数的方法
Jan 04 PHP
两款万能的php分页类
Nov 12 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
PHP isset()及empty()用法区别详解
Aug 29 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
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
电脑教师的教学自我评价
2013/11/26 职场文书
活动策划邀请函
2014/02/06 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书