最近在用dede開發一個網站的時候,發現網站在本地沒什么問題,但是上傳到服務器上面去之后,在首頁會默認的生成一串的字符串,如下圖所示:
百度了之后,發現好多的解決方法都是說的把文件存儲為utf-8無bom模式,但是發現我用了這個方法之后,這字符串還是在~
后面經人提點說有php方法可以去除~然后找到以下代碼:
1 <?php 2 if (isset($_GET['dir'])) { //設置文件目錄 3 $basedir = $_GET['dir']; 4 } else { 5 $basedir = '.'; 6 } 7 8 $auto = 1; 9 checkdir($basedir); 10 11 function checkdir($basedir) 12 { 13 if ($dh = opendir($basedir)) { 14 while (($file = readdir($dh)) !== false) { 15 if ($file != '.' && $file != '..') { 16 if (!is_dir($basedir . "/" . $file)) { 17 echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>"; 18 } else { 19 $dirname = $basedir . "/" . $file; 20 checkdir($dirname); 21 } 22 } 23 } 24 closedir($dh); 25 } 26 } 27 function checkBOM($filename) 28 { 29 global $auto; 30 $contents = file_get_contents($filename); 31 $charset[1] = substr($contents, 0, 1); 32 $charset[2] = substr($contents, 1, 1); 33 $charset[3] = substr($contents, 2, 1); 34 if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { 35 if ($auto == 1) { 36 $rest = substr($contents, 3); 37 rewrite($filename, $rest); 38 return ('<font color="red">BOM found, automatically removed.</font>'); 39 } else { 40 return ('<font color="red">BOM found.</font>'); 41 } 42 } else 43 return ("BOM Not Found."); 44 } 45 46 function rewrite($filename, $data) 47 { 48 $filenum = fopen($filename, "w"); 49 flock($filenum, LOCK_EX); 50 fwrite($filenum, $data); 51 fclose($filenum); 52 } 53 ?>
具體使用方法如下(此流程只針對於php小白~):
1.新建一個php文件,命名你自己隨便取,我這里就取名為:withoutBoml.php;
2.將文件上傳到根目錄下面(所謂的根目錄就是wwwroot或者htdocs);
3.然后運行此段php代碼:http://你的網站域名/withoutBoml.php(比如說你的網站是www.haha.com,那么就運行http://www.haha.com/withoutBoml.php).
運行完之后再看你的網站,發現真的沒有了哦~~
10月24日更新
感謝@ 都瓦克因 ,告訴了我報錯原因是return里面輸出的html語句雙引號沖突了,把最外層的雙引號修改為單引號就可以了;
