ユーザーが生成したソースからの XML フィードを解析するスクリプトがあります。このソースには、特殊文字を含む不適切な形式のエントリが含まれることがあります。
通常は行で utf8_encode() を実行するだけですが、DOM がファイルを徐々に読み取っていて、展開コマンドが実行されるとエラーがスローされるため、これを行う方法がわかりません。
simple_xml がコードを詰まらせているため、後続の行もオフになっています。
これがコードです。
$z = new XMLReader;
$z->open($filename); $doc = new DOMDocument('1.0','UTF-8');
while ($z->read() && $z->name !== 'product');
while ($z->nodeType == XMLReader::ELEMENT AND $z->name === 'product'){
$producti = simplexml_import_dom($doc->importNode($z->expand(), true));
print_r($producti);
}
エラー:
メッセージ: XMLReader::expand(): foo.xml:29081: パーサー エラー: 入力が適切な UTF-8 ではありません。エンコーディングを示してください! バイト: 0x05 0x20 0x2D 0x35
重大度: 警告
メッセージ: XMLReader::expand(): 展開中にエラーが発生しました
ファイル名: controllers/feeds.php
ライン番号: 106
メッセージ: DOMDocument::importNode() に渡される引数 1 は DOMNode のインスタンスでなければなりません。
ファイル名: controllers/feeds.php
ライン番号: 106