php去掉文件UTF-8的BOM头

Posted 烟云的追寻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php去掉文件UTF-8的BOM头相关的知识,希望对你有一定的参考价值。

最近解析csv文件时第一列解析不出来,经过研究发现是文件BOM的问题

可以用以下代码去掉BOM

 1 function checkBOMAndRemove($filename){
 2     $contents = file_get_contents($filename);
 3     $charset[1] = substr($contents, 0, 1);
 4     $charset[2] = substr($contents, 1, 1);
 5     $charset[3] = substr($contents, 2, 1);
 6     if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
 7         $rest = substr($contents, 3);
 8         rewrite($filename, $rest);
 9         return true;
10     } else
11         return false;
12 }
13 
14 
15 function rewrite($filename, $data){
16     $filenum = fopen($filename, "w");
17     flock($filenum, LOCK_EX);
18     fwrite($filenum, $data);
19     fclose($filenum);
20 }

 

以上是关于php去掉文件UTF-8的BOM头的主要内容,如果未能解决你的问题,请参考以下文章

去掉文件 BOM 头

nootpad++去除bom头

去掉utf-8的Bom头:使用java以及jdbc不使用第三方库执行sql文件脚本

求个给UTF-8文件批量去UTF-8 BOM头的批处理,去掉BOM后覆盖原来的文件,最好我可以自己添加多个文件名称!

使用editplus等编程工具时UTF-8编码去掉BOM头方法(转载备查)

php读取文件时多了个%uFEFF[bom字符],怎样去掉?