• 締切済み

SimpleXMLでのWordpress ME2.2.3での動的フィードの読み込み

現在ブログにWordpress ME2.2.3を使用しており、このブログのフィードを simplexml_load_fileで読み込みたいのですがフィードを動的に生成しているため、 ファイルを開くのに失敗してしまいます。 simplexml_load_fileの引数をhttp://からにしてみたら処理がタイムアウトしてしまいました。 WordpressのRSSを静的に生成する方法、もしくは動的なRSSでもsimplexml_load_fileで 読み込むことが可能な方法をご教授下さい。 また、他にも良い方法がありましたら教えて頂きたく思います。 宜しくお願い致します。

みんなの回答

回答No.1

echo file_get_contents("http://~"); とかは動くのでしょうか? simplexml_load_fileのページを見たところではURI指定でも特に問題なく動きそうです。 WordpressのRSSが動的なのに静的に・・・というのは良く解りません。 予めダウンロードしておいて、simplexml_load_stringとかを使うイメージでしょうか? 取得方法はいろいろあると思うので、マニュアルなどを参考にいくつかの方法を試してみると良いんじゃないかと思います。

celpie
質問者

お礼

どうやらhttp://localhostからやっていたのがいけなかったようで 127.0.0.1に変えたら問題なく作動しました。 Wordpressはフィードをxmlファイルを吐き出さないのでそれをxmlファイルに 吐き出す方法はないか知りたかったのですがこちらも解決しました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • simplexml_load_file() のかわりの simplexml_load_string() がエラーになる

    こんにちわ。 お時間あるかた、どうぞよろしくおねがいします。 現在、RSSを読み込んで、色々な処理をしたいと思っています。 そして、下記のコードを書いたところうまくいきました。 $root = simplexml_load_file($url); ところが、使っているレンタルサーバでは PHP.iniのallow_url_fopenをONにすることが禁止されていることを知ったので、 simplexml_load_string()を使うように、プログラムを書き換えました。(下記抜粋) $response = http($url . $parm); $line = explode("\n" , $response); // HTTPヘッダを消す for ( $i=0 ; $i < 100 ; $i++ ) if ( $line[$i] == "" ) break; // HTTPボディーだけ取得 $xml_str = ""; for ( $i++ ; $i < count($line) ; $i++ ) $xml_str .= $line[$i]; $root = simplexml_load_string($xml_str); こうしたところ、一部のRSSで、Error while parsing the documentが出るようになってしまいました。 いくつか試したところ、amebloのフィードはOKなのですが、他のRSSだとエラーになるようです。 $ret = get_rss("http://feedblog.ameba.jp/rss/ameblo/femiohji"); // OK $ret = get_rss("http://pub.ne.jp/marunohi/?action=rss&type=rss1.0"); // NG というわけで、 simplexml_load_file()のときは動いていたのですが、 simplexml_load_string()にしたらエラーになります。 原因がわからず、行き詰まってしまいました。 よろしくおねがいいたします。

    • ベストアンサー
    • PHP
  • SimpleXMLでデータが取得できない

    PHPで、RSSのデータが上手く取得できず、困っております。 最初はSimplePieというフリーのライブラリを使用していたのですが、 一部のRSSのデータが全く取得できなかったので、使用を諦めました。 自分で処理を書こうと思い、以下の手順を踏んで RSSのデータを取得することを考えついたのですが、 それでもデータが取得できませんでした。 1.file_get_contents($url)で、RSSの生データを取得する 2.RSSの文字エンコーディングをUTF-8⇒SJIS⇒UTF-8に再変換 3.simplexml_load_stringでRSSをパース 最初は1と3の手順しか行っておらず、 SimplePieでデータが取得できたRSSはこれでも問題なかったのですが データが取得できなかったRSSで同じものを試すと 文字コードに関するエラーが出てきたので、2の処理を加えました。 文字コードのエラーは全て解消されたのですが、 それでもsimplexml_load_stringでデータがパースできず、 手詰まりになってしまっている状況です。 文字コードエラーが発生しているRSSでも、 xmlの文字列自体は正常に取得できているようなので simplexml_load_stringの段階で何かが失敗しているのだとは思うのですが、 全くエラーも表示されないため、何がダメなのかが分かりません。 どなたか、原因に心当たりがあったら 教えていただけないでしょうか? どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • SimpleXMLでRSSを扱う

    SimpleXMLでRSSを解析したいのですが、SimpleXMLの使い方がイマイチわかりません。 取得したいRSSは以下の東京の天気予報です。 ひとくち予報 in Feed http://www.weathermap.co.jp/hitokuchi_rss/ ウェザーマップ 東京 http://feeds.feedburner.jp/hitokuchi_4410 forecast要素までは取り出せるのですが、そこからtemperatureのmaxやmixを取り出す方法がよく分からないのです。 以下のソースのようにしたとき、$forecastの子要素はまだSimpleXMLElement Objectです。 $atom = simplexml_load_file("http://feeds.feedburner.jp/hitokuchi_4410"); //東京の天気予報 foreach ($atom->channel->item as $item) { $forecast = $item->children("http://www.weathermap.co.jp/rss/ns/forecast.dtd"); } よろしくお願いします。

    • ベストアンサー
    • PHP
  • wordpressの内容を他のサイトで反映するには

    はじめまして。phpはほとんど分からないハナタレです。 クライアントから、webサイトの最新情報くらいは自分で更新したい、それも無料で! と言われました。とりあえず無料のブログサービスで(アメブロ)情報を更新してもらい、そのブログのrssを取ってきてwebサイトに埋め込む事は出来ました。 ただ、さらに、クライアントが、最新情報をカテゴリーごとにまとめたいと言い出しました。いろいろ調べますと、無料のブログサービスではカテゴリーごとにフィードするのは無そうなので、wordpress(3.0.3)でなんとか出来ないかと奮闘中です。 wordpressでのrssでは、タイトルはtitleタグ、時間はpubDateタグ、本文のタグはcontent:encodedだったので、webサイトでのコードは... --------------------------------------------- <?php $url = "http://○○○/wordpress/feed/"; $rss = simplexml_load_file($url); foreach ($rss->channel->item as $j) { $title = $j->title; $time = $j->pubDate; $content = $j->content:encoded; echo "<dt>".date( "Y.m.d.", strtotime( $j->pubDate ) )."</dt>"; echo "<dd>". $title."</dd>"; echo "<dd>". $content."</dd>"; } ?> --------------------------------------------- と、しています。 $content = $j->content:encoded; という記述が間違っているのは何となく分かるのですが... どう記述すれば、ブログの内容をそのまま(画像や動画が埋め込まれていたらそれもそのまま反映させる)反映出来るのでしょうか。 wordpressをカスタマイズして最新情報だけそこへリンクさせればとも思うのですが、 反映させられる事を想定してcssも組んでしまったのでこのphpコードを上手く利用したいのです... どなたか、お分かりになる方、教えて頂けないでしょうか。

    • 締切済み
    • PHP
  • simplexml_load_fileを使用してblogのRSSを読み

    simplexml_load_fileを使用してblogのRSSを読み込み、ページ内に表示させたいのですが 下記のスクリプトでは楽天とlivedoorのRSSの読み込みが出来ません。 色々検索してみたのですがこれといった解決法を発見できなかったので質問させていただきます。 どうぞよろしくお願いいたします。 <?php $xml = simplexml_load_file('RSSをここに入力'); $i = 0; foreach($xml->channel->item as $item) { if(++$i>5) break; $title = (string)$item->title ; $link = (string)$item->link ; echo ("<li><a href=".$link.">".$title."</a></li><br />"); } ?>

    • ベストアンサー
    • PHP
  • RSSフィードエラー http://g.msn.com/1me10IE

    RSSフィードエラー http://g.msn.com/1me10IE8JAJP/の同期失敗 リンクされているRSSコンテンツが無効である可能性がありますのメッセ-ジです どのように対処すればよろしいでしょうか?

  • wordpress上でxmlが読み込めない

    <?php $fileName="http://~~~/jouhou.xml"; if(file_exists($fileName)){ $xml=simplexml_load_file($fileName); }else{ echo "失敗しました。"; } ?> 上記の式を、Wordpress内に設置したphp上で実行したのですが、失敗しか表示してくれません。 環境がセーフモードでないことは確認していて、xmlファイル自体もきちんと該当URLに存在を確認できるのに、なぜ読み込めないのでしょうか? PHP Version 5.1.6 WordPress 3.1.1(自分でインストール) 該当環境にはベーシック認証がかかっています。

    • 締切済み
    • PHP
  • 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... このようなエラーが表示されてしまいます。 自分なりに文字コードを処理しているつもりではあるのですが、 他にも何かしなければならないことがあるのでしょうか? どうぞ知恵を貸していただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • simplexml_load_fileについて

    お世話になります。 simplexml_load_fileについて質問です。 下記のようなコードでライブドアブログのRSSを解析しようとしております。 ブログ記事の全文を取得したいのですが、一部分しか取得することが出来ません アドバイスをお願いします。 宜しくお願いします ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $rss = $data['blog_rss']; $xml = @simplexml_load_file($rss,'SimpleXMLElement', LIBXML_NOCDATA); #ブログタイトル $data['xml']['title'] = $xml->channel->title; #ブログ説明 $data['xml']['description'] = $xml->channel->description; #最大件数 $max_lines = 8; $i=0; foreach ($xml->item as $item) { $ns = $item->getNamespaces(true); $date = $item->children($ns["dc"]); //記事のリンク先 $data['xml']['kiji'][$i]['link'] = $item->link; //記事の見出し $data['xml']['kiji'][$i]['title'] = $item->title; //記事の日付 $pubDate = $date->date; $data['xml']['kiji'][$i]['pubDate'] = date("Y年m月d日 H:i:s", strtotime($pubDate)); //記事本文 $desc = $item->description; $data['xml']['kiji'][$i]['desc'] = $desc; $i++; //最大件数に達したときストップ if ($i == $max_lines) break; }

    • 締切済み
    • PHP
  • simplexml_load_fileのタイムアウト制御

    simplexml_load_fileでXMLをパースしているのですが、パース元からのレスポンスが遅い場合止まってしまいますが、一定時間レスポンスが無い場合に処理をスキップするような方法はないでしょうか、よろしくお願いします。

    • ベストアンサー
    • PHP