欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

php教程

PHP批量自动清除php文件BOM头脚本代码分享

php教程 我的站长站 2024-04-28 共8人阅读

BOM头介绍

BOM头,全称Byte Order Mark,中文名为“字节顺序标记”。它出现在文本文件的头部,主要用于标识文件的编码格式。

造成原因大部分是因为直接使用记事本打开修改php代码,保存没注意,使PHP带了BOM头。所以我们只需要用专业的编辑器工具打开文件,重新保存,保存选择去掉BOM头即可。

批量自动清除BOM头

这里分享下自用的PHP批量自动清除php文件BOM头脚本代码,只需要上传到目录,然后浏览器访问运行即可自动清除目录下的所有php文件BOM头,代码如下:

<?php
header("Content-Type:text/html; charset=utf-8");
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 "文件名称: $basedir/$file ".checkBOM("$basedir/$file")." <br>";
}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 ("<font color=red>发现BOM并且已自动删除</font>");
} else {
return ("<font color=red>发现BOM</font>");
}
}
else return ("没有发现BOM");
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>