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

网络编程 2025-03-24 10:31www.168986.cn编程入门

关于文件编码检测,百度搜索结果众多,但真正可用的方法却不多。对于常见的建议如使用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;

}

```

还有自动编码并读取文件的函数:

```php

/

自动编码读入文件

@param string $file 文件路径

@param string $charset 读取编码(默认UTF-8)

@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 "";

}

```希望这两个函数能为大家带来便利。由于环境差异可能导致这些方法在某些情况下无法正常工作,因此请根据实际情况进行使用和调整。在此提醒,以上代码仅为共享思路,如有不足或错误之处,还请谅解并指正。最后感谢大家的关注与支持!

上一篇:微信小程序 循环及嵌套循环的使用总结 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by