共计 1057 个字符,预计需要花费 3 分钟才能阅读完成。
因为文件头信息输出BOM头信息,有时会对程序的执行结果造成影响,那么此时即应对这些文件的BOM信息进行去除。
如下代码为PHP方式去除当前目录及子目录所有文件BOM信息的代码,新建文件,将其放倒根目录下,然后浏览器访问即可。
<?php | |
if (isset($_GET['dir'])) { //设置文件目录 | |
$basedir = $_GET['dir']; | |
} else { | |
$basedir = '.'; | |
} | |
$auto = 1; | |
checkdir($basedir); | |
function checkdir($basedir) | |
{ | |
if ($dh = opendir($basedir)) { | |
while (($file = readdir($dh)) !== false) { | |
if ($file != '.' && $file != '..') { | |
if (!is_dir($basedir . "/" . $file)) { | |
echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " "; | |
} else { | |
$dirname = $basedir . "/" . $file; | |
checkdir($dirname); | |
} | |
} | |
} | |
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 ("BOM found, automatically removed._http://lzw.me"); | |
} else { | |
return ("BOM found."); | |
} | |
} else | |
return ("BOM Not Found."); | |
} | |
function rewrite($filename, $data) | |
{ | |
$filenum = fopen($filename, "w"); | |
flock($filenum, LOCK_EX); | |
fwrite($filenum, $data); | |
fclose($filenum); | |
} | |
?> |
正文完