php批量去除文件bom頭的簡單介紹

本文目錄一覽:

什麼是Bom頭 怎樣去除PHP文件的Bom頭[有580人瞄過/0評]

菜單–修改–頁面屬性 或者ctrl+j打開頁面屬性窗口,點選「標題/編碼」去掉「包括Unicode簽名Bom」前的勾有Bom的文件太多?這樣太麻煩?當然有更好的方法!方法三:用php文件批量去除bom頭 將以下這段代碼保存為php文件,上傳到伺服器,用瀏覽器訪問它!?phpif (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 (font color=redBOM found, automatically removed./font);} else {return (font color=redBOM found./font);}}else return (BOM Not Found.);}function rewrite ($filename, $data) {$filenum = fopen($filename, w);flock($filenum, LOCK_EX);fclose($filenum);}?還用記事本保存?那你真是智商捉急了!

如何去掉BOM頭

去掉bom頭的辦法,簡單的是下面兩種:

1、editplus去BOM頭的方法

編輯器調整為UTF8編碼格式後,保存的文件前面會多出一串隱藏的字元(也即是BOM),用於編輯器識別這個文件是否是以UTF8編碼。

運行Editplus,點擊工具,選擇首選項,選中文件,UTF-8標識選擇 總是刪除簽名,

然後對PHP文件編輯和保存後的PHP文件就是不帶BOM的了。

2、ultraedit去除bom頭辦法

打開文件後,另存為選項的編碼格式里選擇(utf-8 無bom頭),確定就ok了

PHP批量刪除、清除UTF-8文件BOM頭的代碼實例

記得運行代碼前先把文件備份一下哦,避免出現失敗問題。

代碼一:

複製代碼

代碼如下:

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=redBOM

found,

automatically

removed./font”);

}

else

{

return

(“font

color=redBOM

found./font”);

}

}

else

return

(“BOM

Not

Found.”);

}

代碼二:

複製代碼

代碼如下:

?php

header(‘content-Type:

text/html;

charset=utf-8′);

if(isset($_GET[‘dir’])){

//設置文件目錄,如果沒有設置,則自動設置為當前文件所在目錄

$basedir=$_GET[‘dir’];

}else{

$basedir=’.’;

}

$auto=1;/*設置為1標示檢測BOM並去除,設置為0標示只進行BOM檢測,不去除*/

echo

‘當前查找的目錄為:’.$basedir.’當前的設置是:’;

echo

$auto?’檢測文件BOM同時去除檢測到BOM文件的BOMbr

/’:’只檢測文件BOM不執行去除BOM操作br

/’;

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);

}

?

什麼是Bom頭 怎樣去除PHP文件的Bom頭

方法一:用Ultraedit或Editplus打開PHP文件,另存為無Bom的utf-8文件方法二:用Dreamweaver去除Bom頭

菜單–修改–頁面屬性 或者ctrl+j打開頁面屬性窗口,點選「標題/編碼」去掉「包括Unicode簽名Bom」前的勾

有Bom的文件太多?這樣太麻煩?當然有更好的方法!方法三:用php文件批量去除bom頭 將以下這段代碼保存為php文件,上傳到伺服器,用瀏覽器訪問它!?phpif (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 (font color=redBOM found, automatically removed./font);} else {return (font color=redBOM found./font);}}else return (BOM Not Found.);}function rewrite ($filename, $data) {

$filenum = fopen($filename, w);

flock($filenum, LOCK_EX);

fclose($filenum);}?還用記事本保存?那你真是智商捉急了!

如何使用PHP批量去除文件UTF8 BOM信息

原理:

UTF8文件,微軟為了增加一個識別信息,有了BOM這個東西:BOM —— Byte Order Mark,預設在Windows等平台上編輯的UTF8文件會在頭部增加3個位元組的標記信息,我們PHP引擎在處理的時候會完整讀取整個PHP代碼文檔, 如果PHP文件頭部包含BOM信息,就會輸出一個空白,在很多時候會帶來問題,比如我們session無法工作、cookie無法設置等等問題。

解決方法:

把頭部BOM的3個位元組信息識別出來,然後剔除掉。不過一般情況我們不知道哪個文件有BOM,或者是有很多文件,這個時候,就需要進行批量處理了,下面代碼主要就是展現了批量處理的情況,應該會對大家工作中有幫助。

執行方法:

設置一個路徑,然後直接執行就行。

複製代碼 代碼如下:

?php

// 設定你要清除BOM的根目錄(會自動掃描所有子目錄和文件)

$HOME = dirname(__FILE__);

// 如果是Windows系統,修改為:$WIN = 1;

$WIN = 0;

?

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “”

html xmlns=””

head

meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /

titleUTF8 BOM 清除器/title

style

body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }

.FOUND { color: #F30; font-size: 14px; font-weight: bold; }

/style

/head

body

?php

$BOMBED = array();

RecursiveFolder($HOME);

echo ‘h2These files had UTF8 BOM, but i cleaned them:/h2p class=”FOUND”‘;

foreach ($BOMBED as $utf) { echo $utf .”br /n”; }

echo ‘/p’;

// 遞歸掃描

function RecursiveFolder($sHOME) {

global $BOMBED, $WIN;

$win32 = ($WIN == 1) ? “” : “/”;

$folder = dir($sHOME);

$foundfolders = array();

while ($file = $folder-read()) {

if($file != “.” and $file != “..”) {

if(filetype($sHOME . $win32 . $file) == “dir”){

$foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;

} else {

$content = file_get_contents($sHOME . $win32 . $file);

$BOM = SearchBOM($content);

if ($BOM) {

$BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;

// 移出BOM信息

$content = substr($content,3);

// 寫回到原始文件

file_put_contents($sHOME . $win32 . $file, $content);

}

}

}

}

$folder-close();

if(count($foundfolders) 0) {

foreach ($foundfolders as $folder) {

RecursiveFolder($folder, $win32);

}

}

}

// 搜索當前文件是否有BOM

function SearchBOM($string) {

if(substr($string,0,3) == pack(“CCC”,0xef,0xbb,0xbf)) return true;

return false;

}

?

/body

/html

望採納。

如何去掉BOM頭,PHP批量去除BOM頭的方法

代碼一:

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=redBOM found, automatically removed./font”);

    } else {

      return (“font color=redBOM found./font”);

    }

  }

  else return (“BOM Not Found.”);

}

代碼二:

?php

header(‘content-Type: text/html; charset=utf-8’);

if(isset($_GET[‘dir’])){ //設置文件目錄,如果沒有設置,則自動設置為當前文件所在目錄

  $basedir=$_GET[‘dir’];

}else{

  $basedir=’.’;

}

$auto=1;/*設置為1標示檢測BOM並去除,設置為0標示只進行BOM檢測,不去除*/

 

echo ‘當前查找的目錄為:’.$basedir.’當前的設置是:’;

echo $auto?’檢測文件BOM同時去除檢測到BOM文件的BOMbr /’:’只檢測文件BOM不執行去除BOM操作br /’;

 

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);

}

?

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256866.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:42
下一篇 2024-12-15 12:42

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常問題的解決

    本文旨在解決vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常的問題,提供完整的代碼示例供參考。 一、分析問題 首先,需了解vue中下載文件的情況。一般情況下,我們…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • Python如何導入py文件

    Python是一種開源的高級編程語言,因其易學易用和強大的生態系統而備受青睞。Python的import語句可以幫助用戶將一個模塊中的代碼導入到另一個模塊中,從而實現代碼的重用。本…

    編程 2025-04-29

發表回復

登錄後才能評論