Home  >  Article  >  Backend Development  >  PHP searches for files with BOM tags and removes them

PHP searches for files with BOM tags and removes them

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

In a very large project, it is difficult for us to find out which file contains the BOM tag. If we manually open each file to check, it will consume a lot of our time and be very troublesome. We can easily find out whether all files in the current project or directory contain this BOM tag directly through the PHP program.

The code is as follows:

<?
//此文件用于快速测试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);
}

In fact, these codes were shared by me on the Internet. Since I am quite busy during this period, I don’t have time to optimize the code. Currently, I can only check the files with BOM tags in the current directory. You can also add functions yourself, such as

automatically detecting all files in the subdirectory under the current project.

You can also select files in a certain directory


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn