Php引用文件引起的空白行問題(UTF-8)
來源:程序員人生 發布時間:2014-06-07 12:27:36 閱讀次數:3145次
引用文件指的是include、require_once引用其它文件引起的空白行,這其實是你用記事本編輯UTF-8文件以后,雖然你還是保存為UTF-8格式,但系統會自動給文件加兩個bom標記,但是ie只能忽略一個,另一個就是空白行了。
解決辦法就是:不要用記事本去編輯UTF-8文件,要用其它工具,比Dreamw、EmEditor 、Visual Studio 2008等編輯工具編輯UTF-8文件后保存。
我的兩個站用記事本編輯后頂部就有空白行,起初以為是css設置問題,結果是bom標記引起的。
還有一種辦法,如果你是大量文件都這樣我們可使用一個php函數來搞定,把以下代碼復制到一個PHP文件里面,然后放在需要清除BOM頭的目錄一下運行,就可以批量把PHP空白的首行清除掉,太給力了,代碼如下:
- <?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.</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);
- }
- ?>
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈