2011-07-26 26 views
2

我正在開發一個使用帶有REST API的ZF的應用程序。一切都很順利,只是我的XML在開始時有一個空白字符,所以XML在開始時違反了XML聲明的規則。我想這個消費使用javascript/jQuery和我得到Firebug的控制檯上出現以下錯誤:如何阻止ZF在開始時發送空白字符?

XML Parsing Error: XML or text declaration not at start of entity

有許多,其中討論這個在網絡上的帖子SO等地。這是由於輸出緩衝,我已經嘗試使用ob_flush和刷新其他地方建議,但我只是無法弄清楚如何做到這一點,因爲這些帖子沒有提到這些應該去哪裏。也許我不明白輸出緩衝正確,但任何人都可以告訴我在哪裏我需要把這些調用刪除這個空白字符?

我真的很感謝迴應,因爲我現在花了好幾個小時(花了我一段時間才弄清楚這是第一個問題),我會爲此感到無聊!大聲笑!

感謝

回答

3

你可能已經保存編碼爲UTF-8與Byte Order Mark(BOM)你的PHP文件。嘗試將沒有的編碼爲UTF-8 的PHP文件保存爲BOM。諸如Windows上的Notepad ++或Mac OS上的TextWrangler等高級文本編輯器或大多數其他高級文本編輯器都具有此功能。

另一種可能性是,你在一個單一的PHP文件的這個例子在你的PHP文件中的任何<?php之前無意的空白字符,例如:通過輸出

<-- here for instance 
<?php 
    /* 
    some code to generate $yourXml; 
    */ 
?> 
<-- or here 
<?php 
    echo $yourXml; 
?> 

...或其它無意的空白字符你的PHP代碼。

如果你已經處理了這些問題,那麼就不需要輸出緩衝了。使用輸出緩衝作爲避免這些類型問題的手段是一種草率的編碼習慣。

編輯
也不會解決問題,想一想。

+0

FANTASTIC!你是一個明星(你有一個很酷的名字!)。它是?>和<?php之間的空白區域。好吧,所以我知道了困難的方式,希望我不會再犯這個錯誤LOL!我想知道,我注意到ZF文件似乎沒有關閉?>標籤,是爲了防止這些類型的無意間空白字符? – Ziad

+0

嘿謝謝Ziad,不客氣! –

+0

哦,對不起,我讀了你的問題。是的,防止意外的空白輸出正是Zend忽略'?>'的原因。有關更多信息,請參閱http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html。 –

0
echo trim($yourXml); 

可以SimPy中做到這一點:)

相關問題