自己写了一个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开发文件系统实例讲解
Oct 09 PHP
PHP+javascript液晶时钟
Oct 09 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
PHP面向对象程序设计实例分析
Jan 26 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
PDO::getAvailableDrivers讲解
Jan 28 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中的替代语法简介
2014/08/22 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
php7性能提升的原因详解
2019/10/13 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
基于node.js之调试器详解
2017/08/22 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
Python中的filter()函数的用法
2015/04/27 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
python逆序打印各位数字的方法
2018/06/25 Python
python带参数打包exe及调用方式
2019/12/21 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
社团文化节策划书
2014/02/01 职场文书
明信片寄语大全
2014/04/08 职场文书
语文教研活动总结
2014/07/02 职场文书
工作犯错保证书
2015/05/11 职场文书
2015学校年度工作总结
2015/05/11 职场文书
七一慰问简报
2015/07/20 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
速龙x4-860k处理器相当于i几
2022/04/20 数码科技