自己写了一个php检测文件编码的函数

 更新时间:2014年04月21日 17:00:33   作者:  
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的,下面是自己写了一个检测函数,希望对大家有所帮助
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的、
很多人建议 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中类型转换 ,常量,系统常量,魔术常量的详解

    这篇文章主要介绍了PHP中类型转换 ,常量,系统常量,魔术常量的详解的相关资料,希望通过本文能帮助到大家,让大家掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • PHP Cookie学习笔记

    PHP Cookie学习笔记

    这篇文章主要为大家分享了PHP Cookie学习笔记,告诉大家什么是Cookie,Cookie的功能有哪些? 如何创建、读取、删除Cookie,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 利用PHP实现RPC的代码示例

    利用PHP实现RPC的代码示例

    RPC是一种计算机通信协议,用于使一个计算机程序可以调用另一个运行在不同计算机上的程序的过程或函数,并且无需了解底层网络细节,本文给大家详细介绍了如何利用PHP实现RPC,需要的朋友可以参考下
    2023-10-10
  • PHP压缩图片功能的介绍

    PHP压缩图片功能的介绍

    今天小编就为大家分享一篇关于PHP压缩图片功能的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • PHP8使用Attributes管理代码元数据的示例详解

    PHP8使用Attributes管理代码元数据的示例详解

    在PHP 8中引入了一项强大的功能,即"Attributes"(属性),它们提供了一种新的方法来管理和操纵代码元数据,Attributes允许你在代码中添加元数据,本文给大家介绍了在PHP8中是如何使用Attributes管理代码元数据,需要的朋友可以参考下
    2023-12-12
  • linux环境apache多端口配置虚拟主机的方法深入介绍

    linux环境apache多端口配置虚拟主机的方法深入介绍

    本篇文章是对linux环境apache多端口配置虚拟主机的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP实现的mongoDB数据库操作类完整实例

    PHP实现的mongoDB数据库操作类完整实例

    这篇文章主要介绍了PHP实现的mongoDB数据库操作类,结合完整实例形式详细分析了php基于单例模式针对mongoDB数据库连接、增删改查、统计等操作相关实现技巧,需要的朋友可以参考下
    2018-04-04
  • php数组函数序列之rsort() - 对数组的元素值进行降序排序

    php数组函数序列之rsort() - 对数组的元素值进行降序排序

    rsort() 函数对数组的元素按照键值进行逆向排序。与 arsort() 的功能基本相同。注释:该函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
    2011-11-11
  • PHP中计算字符串相似度的函数代码

    PHP中计算字符串相似度的函数代码

    在php计算字符串相似度similar_text与相似度levenshtein函数的详细介绍,下面我们详细的介绍一下关于字符串相似度介绍
    2012-12-12
  • php内嵌函数用法实例

    php内嵌函数用法实例

    这篇文章主要介绍了php内嵌函数用法,实例分析了php内嵌函数的调用方法与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论