UTF-8 BOM (EF BB BF) 會導致 PHP 輸出異常、Session 啟動失敗、XML 解析錯誤等。需批量掃描專案目錄移除。
<?php
header("Content-Type: text/html; charset=utf-8");
$auto = 1; // 1=自動刪除,0=僅檢測
checkdir("D:\\wamp\\www\\sales"); // 修改為你的專案路徑
function checkdir($basedir) {
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' && $file != '..') {
$full = $basedir . "/" . $file;
if (!is_dir($full)) {
echo "檔案: $full " . checkBOM($full) . " <br>";
} else {
checkdir($full);
}
}
}
closedir($dh);
}
}
function checkBOM($filename) {
global $auto;
$contents = file_get_contents($filename);
if (strlen($contents) < 3) return "檔案過小";
$bom = substr($contents, 0, 3);
if ($bom === "\xEF\xBB\xBF") {
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite($filename, $rest);
return "<font color=red>發現 BOM 並已自動刪除</font>";
}
return "<font color=red>發現 BOM</font>";
}
return "無 BOM";
}
function rewrite($filename, $data) {
$fp = fopen($filename, "w");
flock($fp, LOCK_EX);
fwrite($fp, $data);
fclose($fp);
}
checkdir() 參數改為你的專案根目錄$auto = 1 直接刪除 BOM;設為 0 僅報告不修改EF BB BF 三個位元組flock(LOCK_EX) 防併發損壞core.autocrlf=input 並拒絕 BOM 提交