使用PHP批量去除文件UTF8BOM信息的示例-创新互联

这篇文章主要介绍如何使用PHP批量去除文件UTF8 BOM信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站设计、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的掇刀网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

原理:
UTF8文件,微软为了增加一个识别信息,有了BOM这个东西:BOM —— Byte Order Mark,缺省在Windows等平台上编辑的UTF8文件会在头部增加3个字节的标记信息,我们PHP引擎在处理的时候会完整读取整个PHP代码文档, 如果PHP文件头部包含BOM信息,就会输出一个空白,在很多时候会带来问题,比如我们session无法工作、cookie无法设置等等问题。

解决方法:
把头部BOM的3个字节信息识别出来,然后剔除掉。不过一般情况我们不知道哪个文件有BOM,或者是有很多文件,这个时候,就需要进行批量处理了,下面代码主要就是展现了批量处理的情况,应该会对大家工作中有帮助。

执行方法:
设置一个路径,然后直接执行就行。






UTF8 BOM 清除器



These files had UTF8 BOM, but i cleaned them:';
foreach ($BOMBED as $utf) { echo $utf ."\n"; }
echo '

'; // 递归扫描 function RecursiveFolder($sHOME) {  global $BOMBED, $WIN;  $win32 = ($WIN == 1) ? "\\" : "/";  $folder = dir($sHOME);  $foundfolders = array();  while ($file = $folder->read()) {   if($file != "." and $file != "..") {    if(filetype($sHOME . $win32 . $file) == "dir"){     $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;    } else {     $content = file_get_contents($sHOME . $win32 . $file);     $BOM = SearchBOM($content);     if ($BOM) {      $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;      // 移出BOM信息      $content = substr($content,3);      // 写回到原始文件      file_put_contents($sHOME . $win32 . $file, $content);     }    }   }  }  $folder->close();  if(count($foundfolders) > 0) {   foreach ($foundfolders as $folder) {    RecursiveFolder($folder, $win32);   }  } } // 搜索当前文件是否有BOM function SearchBOM($string) {    if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;   return false;  } ?>

以上是“如何使用PHP批量去除文件UTF8 BOM信息”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


名称栏目:使用PHP批量去除文件UTF8BOM信息的示例-创新互联
文章网址:http://azwzsj.com/article/ddjhsd.html