※ ChatGPTを利用し、要約された質問です(原文:RSSのXMLロードで失敗してしまう)
【解決方法あり】RSSのXMLロードで失敗してしまうエラーの対処法
このQ&Aのポイント
RSSのXMLロードでエラーが発生し、表示ができない場合、文字コードの処理が不足している可能性があります。
文字コードの変換とパース処理を行うことで、エラーを解消することができます。
具体的な処理としては、RSSの文字エンコーディングを変換し、再変換するとともに、特殊文字を削除する必要があります。
RSSのデータを取得する、という処理を行いたいのですが、
文字コードの件でひっかかってしまっているようで
なかなか前に進むことができません。
************
// RSSの内容を取得する
$rss_text = file_get_contents(※RSSのフィードURL);
// RSSの文字エンコーディングを変換→再変換
$rss_text = mb_convert_encoding($rss_text, 'SJIS', 'UTF-8');
$rss_text = mb_convert_encoding($rss_text, 'UTF-8', 'SJIS');
$rss_text = preg_replace('/[\x00-\x1f]/', '', $rss_text);
// RSSをパースする
$rss_xml = new SimpleXMLElement($rss_text);
if ($rss_xml)
{
// XML解析に成功した場合
// SimpleXMLElementオブジェクトからデータを取得
$items = $rss_xml->item;
foreach($items as $item)
{
echo 'ID:'. $item->guid. '<br />';
echo 'リンク:'. $item->link. '<br />';
echo '日付:'. $item->pubDate. '<br />';
echo 'タイトル:'. $item->title. '<br />';
echo '本文:'. $item->description. '<br />';
}
}
************
こういったコードを組んでいるのですが、現状では
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : attributes construct error in...
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in...
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Couldn't find end of Start Tag rss line 1 in...
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in...
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Extra content at the end of the document in...
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in...
このようなエラーが表示されてしまいます。
自分なりに文字コードを処理しているつもりではあるのですが、
他にも何かしなければならないことがあるのでしょうか?
どうぞ知恵を貸していただければと思います。
よろしくお願いいたします。
お礼
ご回答ありがとうございます! ご指摘通り、半角空白に変えたことでエラーは解消されました! ただ、そのせい?かどうかは分かりませんが、 RSSのデータが全くsimplexmlに入っておりませんでしたが… エラーは解消されたので、データがSimpleXMLに入ってこない件は 別スレッドでまた質問させていただきたいと思います。 本当にありがとうございました!