RSSのXMLロードで失敗してしまう
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...
このようなエラーが表示されてしまいます。
自分なりに文字コードを処理しているつもりではあるのですが、
他にも何かしなければならないことがあるのでしょうか?
どうぞ知恵を貸していただければと思います。
よろしくお願いいたします。
お礼
すいません自己解決しました。 is_fileやfile_existsがWordpress上で通らない問題は残りますが…。 $xml=@simplexml_load_file(WP_CONTENT_URL."/uploads/~~.xml") or die ("document.write('XMLが読み込めません');"); if($xml){ 処理 } }else{ echo "失敗しました"; }
補足
言葉が足りなくてすいません。 そのあたりは試した後です。 「PHP内での正式なファイル名」と仰られるパスの記載で間違っている可能性はあると思います。 参照したいフォルダは/wp/wp-content/uploads/で、「/wp/wp-content/uploads/~.xml」や、「http://サーバー名.jp/wp/wp-content/uploads/~.xml」は試しましたがだめでした。