【PHP】simplexml_load_file()のパースエラーが出た時の対処法。XMLが急に表示されなくなった。

simplexml_load_file()でエラー PHP
こんにちは。

数日ぶりに自分のつくったサイトを見た時に
外部から呼び出しているRSSが表示されなくなっていました。

急にだったので焦りましたが
ローカルでMAMPでみたところ
バリバリのバリエラーが出ていました。

simplexml_load_file()  ~~~~~  parser error
という感じでズラ〜っと表示されていました。

あっさり直ったので
直す方法と参考にしたサイトを書いていきます。

simplexml_load_file() ~~~ parser errorの対処法

パースエラーなので簡単に言えば構文エラーです。

ですが、急になったので戸惑いました。
特に文法もおかしくないし・・・。

原因を探ったところ
simplexml_load_file()でXMLを呼び出した際に
不正な文字列がありました。

ダブルクォート「“」とか。

XMLを修正すればエラーは解除しますが
今後のことを考え、PHPのコードを直しました。

【修正前のコード】
    $xml = "https://hasethblog.com/feed";
    $xmlData = simplexml_load_file($xml);
    $json = json_encode($xmlData);
    $array = json_decode($json,TRUE);
    $news_count =  count($array["channel"]["item"]);
ネットでいろんな記事を参考にして書いたコードですが、
シンプルなコードすぎてエラーが発生したようです。

参考にしたサイトは
 
なんとか修正して

【修正後のコード】
$xml = "https://hasethblog.com/feed"; 
$html = file_get_contents($xml); 
$invalid_characters = '/[^\x9\xa\x20-\xD7FF\xE000-\xFFFD]/'; 
$html = preg_replace($invalid_characters, '', $html); 
$xmlData = simplexml_load_string($html);
$json = json_encode($xmlData);
$array = json_decode($json,TRUE);
$news_count =  count($array["channel"]["item"]);
このように修正したところ無事表示されるようになりました。

勉強になりました。

 

コメント

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