不要因为一时的失败和挫折,就忘记以往壮志满满说过要去的远方。人皆有爱生恶死之心,人皆为舍生取死之道。何也见善不明耳。
今天做php的一个上传TXT文件的小功能时,由于网站采用的是UTF-8编码的方式,所以需要对上传文件的编码进行判断,只有UTF-8编码的文本文件才可以上传,网上搜索了一些别人写的判断函数发现基本上不能用或者说判断的不准确,索性自己就研究了下写了一个,判断的准确率还可以!
php 判断文件编码的方法
定义一个php判断编码的函数
可以利用 php 中转换字符编码的函数 mb_convert_encoding(),对文件的内容进行不同的编码类型转换,再与原有的内容进行比较!
function getcodetype($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文件,文本文件等,函数会输出文件的编码类型,如果输出为空则表示没有找到文件的编码类型!
echo getcodetype('text.txt'); // UTF-8 echo getcodetype('user/code.php'); // UTF-8
PS:上面的函数中,可以自己多定义一些编码的类型或调整它们的顺序,这里主要为了效率只写几个!
本文php检测文件编码类型的方法到此结束。要么读书,要么健身;一边养内,一边塑外;内美了自己,外养眼了别人。从此只有行动,没有抱怨的话。小编再次感谢大家对我们的支持!