解決require once後頂部輸出空白行問題

2021-05-26 08:38:41 字數 999 閱讀 4434

**

在ucs 編碼中有乙個叫做"zero width no-break space"的字元,它的編碼是feff。而fffe在ucs中是不存在的字元,所以不應該出現在實際傳輸中。ucs規範建議我們在傳輸位元組流前,先傳輸字元"zero width no-break space"。這樣如果接收者收到feff,就表明這個位元組流是big-endian的;如果收到fffe,就表明這個位元組流是little-endian的。因此字元"zero width no-break space"又被稱作bom。更多了解請參見維基百科。

對於這個utf-8特有的bom標記,各種瀏覽器的處理方式不同,firefox會忽略,而ie則會產生輸出或者忽略一次。而輸出的效果則是乙個空行或者亂碼。這剛好就解釋了為什麼我之前編輯好的檔案(含有乙個bom標記)顯示正常,當我使用require_once包含進另乙個檔案時,就產生了兩個bom標記,而瀏覽器只忽略第乙個,第二個bom標記則被作為空行被輸出了。所以出現了明明正常的css樣式,頂部卻多了乙個空白行。

windows就是使用bom來標記文字檔案的編碼方式的,所以如果用記事本編寫**,然後另存為utf-8格式,檔案頭就會自動加入這個bom標記。utf-8編碼的檔案中,bom佔三個位元組,標記值為ef bb bf。

既然知道bom的標記值為ef bb bf,那就可以寫段**批處理了

<?php

$s=0;//統計成功數

$f=0;//統計失敗數

//遍歷所有檔案

function find_allfile()

$i.="/*";

}return $allfile;

}//清除bom標記

function del_bom()else}}

}del_bom();

if($s==0 && $f==0)else

?>

寫入 del_bom.php檔案中

放入**路徑中,ie中執行 http://localhost/del_bom.php

或 cmd 提示符下 php del_bom.php

require和require once的區別

include 和require 語句包括並執行指定檔案。include 產生乙個警告而 require 則導致乙個致命錯誤。換句話說,如果你想在遇到丟失檔案時停止處理頁面就用 require include 就不是這樣,指令碼會繼續執行。require once 為了避免重複載入檔案。意為 載入檔...

require和require once的區別

require 的使用方法如 require inc.php 通常放在 php 程式的最前面,php 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 php 程式網頁的一部份。include 使用方法如 include inc php 一般是放在流程控制的處理區段中。php 程...

require和require once的區別

include 和require 語句包括並執行指定檔案。include 產生乙個警告而 require 則導致乙個致命錯誤。換句話說,如果你想在遇到丟失檔案時停止處理頁面就用 require include 就不是這樣,指令碼會繼續執行。require once 語句在指令碼執行期間包括並執行指定...