0

XMLコードを返すAPIを構築しています。たとえば、API は次を返します。

<message>hello, this is a message &amp; it used htmlsepcialchars</message>

file_get_contents() と simplexml_load_string() を使用して、返された情報を配列にロードしています。

次に、utf8_decode() を使用して、メッセージを受信 Web サイトで使いやすい文字セットに変換しました。ただし、メッセージ内のアンパサンド (&) をピンポイントする次のメッセージが表示されます。

Warning: main() [function.main]: unterminated entity reference 

アンパサンドが原因で、メッセージの残りの部分が切り捨てられます。この問題を回避する方法はありますか?

4

3 に答える 3

0

アンパサンドがエンコードされていないようですので、二重にデコードするか、CDATA フィールドに入れます。

通常、そのような特殊文字は CDATA フィールドに入れる必要があります。エンコードする手間が省けます。php DOM 作成関数には、必要なものがあります。


$doc->createCDATASection

そしてもちろん :

http://www.w3schools.com/Xml/xml_cdata.asp

および http://fr.php.net/manual/en/function.domdocument-create-cdata-section.php

于 2011-01-11T09:36:38.720 に答える
0

simpleXML 文字列は utf8 でエンコードする必要があり、値エンティティはエスケープする必要があります。あなたutf_decode()のコードで本当に必要ですか?

于 2011-01-11T09:37:44.227 に答える
0

私の答え、ユーザーエラーが見つかりました。基本的に、コードのどこかで再びエスケープしていました。

于 2011-02-11T10:35:57.413 に答える