Heim  >  Artikel  >  Backend-Entwicklung  >  PHP查找带BOM标签的文件,并且去掉BOM标签

PHP查找带BOM标签的文件,并且去掉BOM标签

高洛峰
高洛峰Original
2016-10-21 10:25:161338Durchsuche

在一个很庞大的项目的时候,我们很难发现到底哪个文件才是包含BOM标签的文件,如果我们手动去打开每一个文件去检查,那将会耗掉我们大量的时间,而且很麻烦,我们可以直接通过PHP程序就可以轻松查找出当前项目或者目录下的所有文件,是否包含这BOM标签。

代码如下:

<?
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
  
$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。
  
//以下不用改动
  
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!=&#39;.&#39; && $file!=&#39;..&#39; && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>";
}
closedir($dh);
}
  
function checkBOM ($filename) {
global $auto;
$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
if ($auto==1) {
$rest=substr($contents, 3);
rewrite ($filename, $rest);
return ("<font color=red>BOM found, automatically removed.</font>");
} else {
return ("<font color=red>BOM found.</font>");
}
}
else return ("BOM Not Found.");
}
  
function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}

其实这些代码也是本人在网上查找分享出来的,由于这段时间比较忙,所以也没有时间去优化一下代码,目前只能检查当前目录下带有BOM标签的文件,你们也可以自己增加一下功能,如

自动检测当前项目下的子目录的所有文件。

也可以改为可以选择某一个目录下的文件


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn