PHP批量檢測並去除檔案BOM頭資訊代碼

來源:互聯網
上載者:User

如下代碼為PHP方式去除目前的目錄及子目錄所有檔案BOM資訊的代碼,建立檔案,將其放倒根目錄下,然後瀏覽器訪問即可。

例子

將以上代碼儲存為尾碼為php的檔案放到需要去除bom的檔案目錄裡面,然後運行該php檔案,將會對該目錄以及該目錄所有的子目錄下的檔案進行bom檢查並去除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") . " <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 found, automatically removed._<a href="http://www.111cn.net">http://www.111cn.net</a></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);
}
?>

例子二

 代碼如下 複製代碼

<?php
header('content-Type: text/html; charset=utf-8');
$auto=1;/*設定為1標示檢測BOM並去除,設定為0標示只進行BOM檢測,不去除*/
$basedir='.';
$loop=true;//www.111cn.net echo '當前尋找的目錄為:'.$basedir.'當前的設定是:';
echo '(1)',$loop?'檢查目前的目錄以及目前的目錄的子目錄':'只針對目前的目錄進行檢測';
echo '(2)',$auto?'檢測檔案BOM同時去除檢測到BOM檔案的BOM<br />':'只檢測檔案BOM不執行去除BOM操作<br />';

checkdir($basedir,$loop);
function checkdir($basedir='',$loop=true){
 $basedir=empty($basedir)?'.':$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{
     if(!$loop) continue;
     $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);
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.