2

REST API を持つ ZF を使用してアプリを開発しています。XML の先頭に空白文字があることを除けば、すべて順調に進んでいるため、XML は先頭に XML 宣言を含めるという規則に違反しています。javascript/jquery を使用してこれを使用しようとしていますが、firebug のコンソールに次のエラーが表示されます。

XML 解析エラー: XML またはテキスト宣言がエンティティの先頭にありません

これについて議論している SO や Web 上の他の場所には、多数の投稿があります。これは出力バッファリングが原因であり、他の場所で提案されているように ob_flush と flush を使用しようとしましたが、これらの投稿ではこれらがどこに行くべきかについて言及されていないため、その方法がわかりません。出力バッファリングを正しく理解していないかもしれませんが、この空白文字を削除するためにこれらの呼び出しをどこに置く必要があるかを誰か教えてもらえますか?

私は今これにかなりの時間を費やしたので(そもそもこれが問題であると理解するのにかなりの時間がかかりました)、私はそれについて大騒ぎしています!笑!

ありがとう

4

2 に答える 2

3

バイト オーダー マーク(BOM)を使用して UTF-8 としてエンコードされた PHP ファイルを保存した可能性があります。BOMなしでUTF-8 としてエンコードされた PHP ファイルを保存してみてください。Windows の Notepad++ や Mac OS の TextWrangler などの高度なテキスト エディタ、またはその他のほとんどの高度なテキスト エディタには、このような機能があります。

もう 1 つの可能性は<?php、PHP ファイル内の any の前に意図しない空白文字があることです。たとえば、次の単一の PHP ファイルの例です。

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

...または PHP コードによって出力されるその他の意図しない空白文字。

この種の問題に対処した場合は、出力バッファリングは必要ありません。この種の問題を回避する手段として出力バッファリングを使用するのは、ずさんなコーディングの習慣です。

編集
考えてみれば、おそらく問題は解決しないでしょう。

于 2011-07-26T16:35:58.137 に答える
0
echo trim($yourXml); 

あなたはこれを簡単に行うことができます:)

于 2011-07-27T08:25:02.643 に答える