このサイトには広告が含まれています

SimplePieでinvalid XMLエラーが出たときの解決策

SimplePieでinvalid XMLエラーが発生するとげんなりしますよね。これはRSSの記述に原因があるためこちらでは何ともしようがありません。と、思っていたのですが解決策を見つけたので共有します。v1.5.6以上で動作確認済み&複数フィードにも対応しています。

結論:以下のコードをコピペする

場所:SimplePie.php → init関数内「//Empty response check」コメント行のすぐ上

$this->raw_data = preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $this->raw_data);

こんな感じ。

if ($this->feed_url !== null)
{
  ~略~
}

// ここに追加
$this->raw_data = preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $this->raw_data);

//Empty response check
if(empty($this->raw_data)){
  ~略~
}
何をやってるの?

このエラーの原因はRSS内に制御文字が含まれていること。なので正規表現を使いそれらを全て削除しています。

注意点としては、SimplePieをバージョンアップする度に追記し直す必要があります。

コメント欄

タイトルとURLをコピーしました