2011-12-13 47 views
2

我試圖使用PHP包括或要求是這樣的:PHP,包括印刷意外

 <div id="menu"> 
      <?php 
      include("tmpl/links.php"); 
      ?> 
     </div> 

而且這其中的聯繫,但它也打印一些垃圾。它在菜單上方印刷:

  

這對我來說並不意味着什麼。如果我使用include或require,就會發生這種情況。這裏的links.php,好措施:

 <ul> 
     <li> 
      <a href="index.php">Home</a> 
     </li> 
     <li> 
      <a href="schedule.php">Schedule/Results</a> 
     </li> 
     <li> 
      <a href="roster.php">Roster</a> 
     </li> 
     <li> 
      <a href="coaches.php">Coaching Staff</a> 
     </li> 
     <li> 
      <a href="aboutus.php">About Us</a> 
     </li> 
     <li> 
      <a href="prospective.php">Prospective Players</a> 
     </li> 
     <li> 
      <a href="links.php">Links</a> 
     </li> 
     <li> 
      <a href="photos.php">Photos</a> 
     </li> 
     <li> 
      <a href="contactUs.php">Contact Us</a> 
     </li> 
     <li> 
      <a href="https://www.facebook.com">Facebook</a> 
     </li> 
     </ul> 

誰能幫我找出如何消除垃圾()?

+1

我在幾年前就發生過這種情況。我將代碼複製到一個新的記事本文件中,並刪除了舊文件並修復了它。從未想出它是什麼。 –

+3

嗯... [BOM](http://rusanu.com/2009/05/21/have-you-met-i%C2%BB%C2%BF-say-hello-to-my-bom/) ? –

回答

2

聽起來像它可能是一個編碼問題。確保您的文本是UTF8編碼(無BOM)。我喜歡用Notepad ++來做到這一點。

+0

沒有物料清單似乎是固定它的東西;切換到UTF-8並沒有改變它。謝謝! – piebie

+1

UTF-8根本不應該有一個BOM - 它對它沒有任何意義,並且包含它也是一個錯誤。另外,將輸出字符集設置爲utf-8將隱藏BOM(如果有的話),但它仍然存在。這將使得使用php設置標題成爲不可能,因爲標題必須在輸出之前發送 - 但是在任何PHP代碼運行之前BOM將輸出。最後,由於您在輸出中看到了這些字符,因此您沒有正確設置輸出的字符集,因此請修正。 'ini_set('default_charset','UTF-8');' – Ariel

5

這是UTF-16 BOM(字節順序標記)。

解決方法:切勿使用UTF-16。

改爲將文件另存爲UTF-8。

5

您已經找到了一些名爲Byte Order Marker的東西 - 一些Windows程序喜歡添加這些字節(針對Unicode標準的建議),以幫助他們弄清楚如何在將來再次解析這些文件。

我推薦使用不同於notepad.exe的文本編輯器; vim或類似的東西應該讓你刪除那些沒有太多麻煩的字節,然後只要你堅持不插入垃圾到你的文件的編輯器,他們就不會回來。