• 締切済み

php rss取得方法

こんにちは、rss取得方法を勉強中なのですが 下記phpでrssを取得しているのですが、$xml->entry[$i]['item']->titleなどで うまく表示されません。(外部phpからxoopsのpicoというモジュールのrssを取得しようとしています。) phpコード $rssurl = "url"; $xml = simplexml_load_file($rssurl); $num_of_data = 4; $outdata = ""; for ($i=0; $i<$num_of_data; $i++){ $outdata .= "<li>"; $outdata .= "<a href=\""; $outdata .= $xml->entry[$i]->link[href]; $outdata .= "\">"; $outdata .= $xml->entry[$i]['item']->title; $outdata .= "</a><br />\n"; $outdata .= "</li>"; } xmlの中身 SimpleXMLElement Object ( [@attributes] => Array ( [version] => 2.0 ) [channel] => SimpleXMLElement Object ( [title] => XOOPS Cube Site - pico [link] => http://localhost/xoops/modules/pico/ [description] => SimpleXMLElement Object ( ) [lastBuildDate] => Thu, 13 Dec 2012 02:52:29 +0100 [docs] => http://backend.userland.com/rss/ [generator] => XOOPS - pico [category] => TOP [webMaster] => admin@hotmail.co.jp [language] => ja [item] => Array ( [0] => SimpleXMLElement Object ( [title] => コンテンツ1 [link] => http://localhost/xoops/modules/pico/index.php/index.html [description] => 正式名称:NARUTO -ナルト概要:体内に九尾の妖狐を封印された落ちこぼれ忍者・うずまきナルトが、里一番の忍である火影を目指し、数々の試練を乗り越え成長していく物語。仲間との友... [guid] => http://localhost/xoops/modules/pico/index.php/index.html [pubDate] => Thu, 13 Dec 2012 02:52:29 +0100 [category] => アニメタイトル ) [1] => SimpleXMLElement Object ( [title] => ee [link] => http://localhost/xoops/modules/pico/index.php/content0003.html [description] => e [guid] => http://localhost/xoops/modules/pico/index.php/content0003.html [pubDate] => Thu, 13 Dec 2012 02:03:51 +0100 [category] => アニメタイトル ) [2] => SimpleXMLElement Object ( [title] => コンテンツ6 [link] => http://localhost/xoops/modules/pico/index.php/content0002.html [description] => コンテンツ2 [guid] => http://localhost/xoops/modules/pico/index.php/content0002.html [pubDate] => Thu, 13 Dec 2012 01:53:17 +0100 [category] => アニメタイトル ) ) ) )

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

せめて「ソース表示」にした状態を転記してください。構造が読み取れません。 [item] => Array ( [0] => SimpleXMLElement Object ( [title] => コンテンツ1 となっていますから、最低でも $xml->channel->item[$i]->title などとなるのではないですかね。 var_dumpで$xml->channel、$xml->channel->item、$xml->channel->item[0]などと少しずつ辿ってみた方が早いです。

関連するQ&A

  • PHP4でXML

    こんにちは。PHPでXMLファイルを書き換えたいのですが、サーバ環境がPHP5ではありません。以下のようにHTMLと同じ方法でphpファイルを読み込むことは不可能なのでしょうか?だとしたら他に良い方法はありますか?困っています。どなたか助けてください。よろしくお願いします。 <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>○○1</title> <link>http://○○</link> <description>ウェブサイトに掲載されている最新の情報を掲載しております。</description> <language>ja</language> <copyright>Copyright (c) 2007 ○○, Inc. All Rights Reserved.</copyright> <pubDate><?php include("../rss/date.php"); ?></pubDate> <item> <title>ニュースリリース</title> <link>http://○○</link> <description><?php include("../rss/news.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> <item> <title>商品一覧ページ</title> <link>http://○○</link> <description><?php include("../rss/prodact.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> <item> <title>沿革</title> <link>http://○○</link> <description><?php include("../rss/corporation.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> </channel> </rss>

    • 締切済み
    • XML
  • RSSがgoo RSSリーダーV3で表示されない

    DBの内容をRSSで出力しgoo RSSリーダーで表示しようとさせていますが、うまくいきません。具体的にはgoo RSSリーダーでRSSサイトの登録はできるのですが、選択すると上のペイン(タイトルが表示されるところ)は空白で、下のペイン(内容が表示されるところ)はxmlのソースが生で表示されます。他のRSSサイトの表示は問題ありません。(インターネット/イントラネット) 出力方法はイントラサーバーのDB(Accessファイル)からASPがデータを成形後RSSファイルを出力させるものです。(下記に出力後のソースを記入します。一部データをハイフンでおきかえています) <?xml version="1.0" encoding="Shift_JIS"?> <rss version="2.0"> <channel> <title>更新情報RSS</title> <link>http://---.html</link> <description>---をチェック</description> <language>ja</language> <pubDate>Fri,2 Feb 2007 13:49:00 +0900</pubDate> <generator>------</generator> <item> <title>タイトル1</title> <link>http://---.html</link> <description>内容紹介1</description> <pubDate>Thu,1 Feb 2007 11:39:29 +0900</pubDate> </item> <item> <title>タイトル2</title> <link>http://---.html</link> <description>内容紹介2</description> <pubDate>Thu,1 Feb 2007 11:45:29 +0900</pubDate> </item> </channel> </rss> IE6.0でソースの表示はできるのでXML構造には問題ないと思います。アドバイスよろしくお願いします。

    • 締切済み
    • XML
  • RSS Feedの外部ファイル読み込み

    RSS Feedのソースの中に外部ファイルを読み込むことは出来ますでしょうか? 以下のような感じで、RSS Feedのrss.xmlにcontents.xmlをインクルードすることは、可能でしょうか。 可能であれば、どのように記述すれば良いでしょうか? 分かる方、よろしくお願い致します。 rss.xml----------------------------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xml:lang="ja"> <channel> <title>RSSのタイトル</title> <link>http://~</link> <description>RSSの説明</description> <language>ja</language> <copyright>RSSのコピーライト</copyright> <lastBuildDate>日付</lastBuildDate> <item> <title>タイトル1</title> <link>http://~</link> <description>タイトル1の説明</description> <category>タイトル1のカテゴリ</category> <pubDate>タイトル2の日付</pubDate> </item> ここに「contents.xml」の内容を読み込みたい </channel> </rss> ------------------------------------------------------------------ contents.xml------------------------------------------------------ <?xml version="1.0" encoding="UTF-8" ?> <item> <title>タイトル2</title> <link>http://~</link> <description>タイトル2の説明</description> <category>タイトル2のカテゴリ</category> <pubDate>タイトル2の日付</pubDate> </item> ------------------------------------------------------------------

    • ベストアンサー
    • XML
  • RSS2.0の書き方

    自分のHPのRSSフィード(RSS2.0)を書いたのですが、RSSリーダー(RSSリーダーは既にある前提)で何故か読めません。どこが悪いのか、御指摘いただければ幸いです。 ・RSSフィード名:rss.xml(rss.txtで下記のものを作成して、utf-8に変換してから、拡張子を.txt -> .xmlに変更) ・TOPのHTMLファイルのheadタグ内に以下を記述して、RSSフィードの置いてある場所を指定 : <link rel="alternate" type="application/rss+xml" title="RSS" href="[RSSフィードのあるアドレス]" /> ・RSSフィードの内容: <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xml:lang="ja"> <channel> <title>[サイトのタイトル]</title> <link>[サイトのアドレス]</link> <description>[サイトの紹介、説明文]</description> <language>ja</language> <item> <title>[エントリーのタイトル]</title> <link>[エントリーのアドレス]<link> <guid isPermaLink="true">[エントリーのアドレス]</guid> <category>[エントリーのカテゴリー]</category> <pubDate>[作成日時]</pubDate> <description><[エントリーの紹介文]></description> </item> </channel> </rss> (注)[作成日時]は、Wed, 10 Mar 2010 23:32:13 +0900 のように記述しています。 以上なのですが、何が駄目なのでしょうか? よろしくお願い致します。

    • 締切済み
    • XML
  • PHPからのRSS出力について

    お世話になります。PHP初級です。 MySQLからデータを取得し、RSS(xml)出力したいと思い、何とか形になってきましたが、表示で問題が発生してしまいました。 データは30件程度入力してあります。 ・IE7 そのまま開くと一応正常(?)に表示。ただしブックマークすると     最初の1件しか記事が表示されない ・Firefox ブックマークは出来るが、記事の各タイトルが表示されない ・goo RSSリーダー 最初の1件しか記事が表示されない 以下ソースです。 <?php header ("Content-Type: application/xml; charset=euc-jp"); echo "<?xml version=\"1.0\" encoding=\"EUC-JP\"?>" . "\n"; echo "<rss version=\"2.0\">" . "\n"; echo "<channel>" . "\n"; echo "<title >タイトル RSS</title>" . "\n"; echo "<link>http://www.yahoo.co.jp</link>" . "\n"; echo "<description>RSS</description>" . "\n"; echo "<language>ja</language>" . "\n"; echo "<copyright>C</copyright>" . "\n"; echo "<managingEditor></managingEditor>" . "\n"; echo "<webMaster>000@0000.com</webMaster>" . "\n"; echo "<pubDate>" . "2009-02-26T00:00:00+0900" . "</pubDate>" . "\n"; echo "<lastBuildDate></lastBuildDate>" . "\n"; // ファイルインクルード include("設定ファイル"); // データベースへ接続 $conn = mysql_connect($host, $user, $pw) or die("データベース接続エラー"); mysql_select_db($db, $conn); // SQLを組み立て $sql = "SELECT * FROM テーブル LIMIT 0, 15"; // 結果セットを取得 $res = mysql_query($sql); // 取り出したデータを表示する while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<item>" . "\n"; echo "<title>" . $row["dtitlej"] . "</title>" . "\n"; echo "<link>" . "xxx.xml" . "</link>" . "\n"; echo "<description></description>" . "\n"; echo "<pubDate></pubDate>" . "\n"; echo "</item>" . "\n"; } echo "</channel>" . "\n"; echo "</rss>"; // 結果セットを破棄 mysql_free_result($res); // 接続解除 mysql_close($conn); ?> どこがどう悪いのか、どうしても分からず投稿しました。 何分RSS(xml)も初めてですので、どうかお助けください。

    • 締切済み
    • PHP
  • PHPでHTMLをXMLに変換したときに消える内容

    教えてください。 スクレイピングのために、よく分からないままに、 PHPでHTMLをXMLに変換して、Xpathで参照しようとしています。 が。 その前段で、「HTML内に存在する内容が、XMLに変換した際に 消えてしまう」という現象に悩まされております。 例を挙げますと、 --------------------------------------- <html> <body> <table> <tr> <td><b>foo</b> bar<br> </td> </tr> </table> </body> </html> --------------------------------------- みたいなページを、 --------------------------------------- <?php $html = file_get_contents('http://xxxxxxxxxxxxxxxxx.com/foobar.html'); $dom = new DOMDocument(); @$dom->loadHTML($html); $xml = simplexml_import_dom($dom); print_r($xml); ?> --------------------------------------- のように処理すると、 --------------------------------------- SimpleXMLElement Object ( [body] => SimpleXMLElement Object ( [table] => SimpleXMLElement Object ( [tr] => SimpleXMLElement Object ( [td] => SimpleXMLElement Object ( [b] => foo [br] => SimpleXMLElement Object ( ) ) ) ) ) ) --------------------------------------- のような結果になって、「あれ?fooはいるけど、barは何処いった?」となります。 分かっている方には、「そりゃ、おまえ、あたりまえだよwww」 「つーか、なにやっとんのwww」って感じなのかもしれませんが、 さっぱり分かりません。 元のHTMLの書きぶりがダメだからということでしょうか。 お手数をお掛けしますが、どうぞ、ご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP変数にXMLのタグ内容を代入するには?

    ■質問内容: 超初心者です。質問が的外れかもしれませんが自己解決できずにいます。何卒ご教授ください。 達成したい内容としてRSS生成をPHPで作成中です。 PHPの $hensu1 = 別ファイルXMLにある<namae>名前</namae>の"名前" を代入したいのですが記述方法が解らず、困っております。 そのほかの質問もありますが、後述します。 ■環境: php:4.3.** (ホスティングの為、サーバの設定変更などできません) ■状況と経緯: 実際のコードを乗せます。 直接ご指摘いただけると、大変ありがたいです。 【rss.php】 <?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?> <? $hensu1 = "(1)別ファイルXMLにある<namae>名前</namae>の"名前" を代入したい"; $hensu2 = "(2)別ファイルXMLにある<nedan>100円</nedan>の"100円" を代入したい"; $pubjikan ="(3)別ファイルXMLにある<jikan>2009/02/26-17:50</jikan>の"2009/02/26-17:50"を代入したい" ?> <rss version="2.0"> <channel> <title >タイトル</title> <link>http://local/</link> <description>webページ</description> <language>ja</language> <copyright>会社</copyright> <managingEditor></managingEditor> <webMaster></webMaster> <pubDate>Thu, 26 Feb 2009 00:00:00 +0900</pubDate> <lastBuildDate></lastBuildDate> <item> <title>タイトルは<? echo "[ {$hensu1} ]"; ?>です</title> <link>books.xml</link> <description>価格は<? echo "[ {$hensu2} ]"; ?>です</description> <pubDate><? echo $pubjikan; ?></pubDate> ←(4)ここは日付を成型するPHPを記述したいの </item> ~(5)ここに、XMLから繰り返し取得したい(最大5件程度)~ </channel> </rss> --- 【books.xml】 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="table.xsl"?> <books xml:space="default"> <book no="000">  <namae>名前</namae> <nedan>100円</nedan> <jikan>2009/02/26-17:50</jikan> </book> <book no="000"> ←(5)に該当。以降を繰り返し5件程度取得したい。 <namae>名前2</namae> <nedan>200円</nedan> <jikan>2009/02/25-19:30</jikan> ~ ~繰り返し数十件のデータあり ~ </book> </books> --以上-- 上記の(1)~(5)について教えてください。 出来れば具体的な記述でご指摘いただけるか参考サイトをご紹介 下さるとありがたいです。 Domxmlなど自分なりに見当つけてみましたが、上手くいきませんでした。 何卒、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • RSS 日付の取得方法

    見てくださった方、こんにちは。 php超初心者のkitakaruと申します。 ホームページを作っていて、 RSSを取得して表示させたいのですが、 それが出来ずにほとほと困っています。 htmlやcssは多少分かるのですが、 phpは全くといっていいほど分かりません。 どなたか詳しい方がいらしゃいましたら、 ご教示頂けますでしょうか。 よろしくお願い致します。 呼び出しているxmlの形式はrss2.0です。 http://i-njoy.net/tips/rss.shtml こちらのサイトを参考に 以下のようソースを書きました。 (1)のpubdateというタグの値を引っ張ってこれず そこで行き詰ってしまっています。 ちなみにタイトルなどはきちんと表示されています。 分かる方、どうぞよろしくお願いします。 <?php require_once 'rss_fetch.inc'; require_once 'code_table.ucs2jis'; require_once 'jcode.php'; $url = 'http://www.xxxxxxxxxxxxx/index.xml?mode=rss'; $rss = fetch_rss($url); $title = $rss->channel['title']; $date1 = htmlspecialchars($item['pubdate']);  //(1)rss 出力日時を取得して 変数data1に代入 $date2 = date("Y.m.d", strtotime($date1));   //(2)表示形式変換 data1を変換したものを変数data2に代入 //JcodeConvert($str, $from, $to) //0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8 $title = JcodeConvert($title, 4, 4); foreach ($rss->items as $item ) { $title = $item[title]; $title = JcodeConvert($title, 4, 4); $url = $item[link]; echo '<li><dl><dt>'.$date1.'</dt><dd><a href="'.$url.'">'.$title.'</a></dd></dl></li>'; //(3)変数data2を出力 } ?>

    • ベストアンサー
    • PHP
  • simplexmlで取得したデータを配列へ。

    PHP5のsimplexml_load_fileでデータにアクセスし、配列に 入れたいのですが、うまくいきません。 $xml = simplexml_load_file($file); $arrayA = array(); foreach($xml->A as $A){ array_push($arrayA, $A); } print_r($arrayA); とすると、 Array ( [0] => SimpleXMLElement Object ( [0] => data1 ) [1] => SimpleXMLElement Object ( [0] => data2 ) [2] => SimpleXMLElement Object ( [0] => data3 ) ) となってしまいます。 そうではなくて、 Array ( [0] => data1 [1] => data2 [2] => data3 ) とデータの中身を直接配列に入れたいのですが、 どうすればよいのでしょうか。 非常に初歩的な質問じゃないかと思うのですが、どなたがご教示 いただけますと有難いです。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHP4でXMLを取得する方法

    XMLをPHPにて参照したいのですが、 レンタルサーバーがPHP4の為、PearのXML_Unserializerを使用しています。 通常問題なく使用できていたのですが、 http://weather.livedoor.com/forecast/rss/index.xml から取得してみようとした所、<ldWeather:lwws id="*" /> の箇所がどうしても取得出来ません。 print_rにて確認したところ、[ldWeather:lwws]となっているのですが、コロンがある場合はどのように取得したらいいのでしょうか? 以下がコードになります require_once("Unserializer.php"); $add = "http://weather.livedoor.com/forecast/rss/index.xml"; $xmldoc = join("",file($add)); $opt = array ('complexType' => 'object','parseAttributes' => 'true','attribuesArray' => '_attributes'); $xml = new XML_Unserializer($opt); $xml -> unserialize($xmldoc, false); $xml = $xml->getUnserializedData(); mb_convert_encoding($xml, "SJIS","UTF-8"); print_r($xml->channel->item[1]->ldWeather:lwws);←ここが問題箇所 PHPを始めたばかりで説明に不十分な箇所があるかも知れませんが、よろしくお願い致します。 PHPバージョン:PHP Version 4.4.6 XML取得先:Livedoor Weather Web Service 利用目的:勉強の為

    • ベストアンサー
    • PHP