PHPを使ってRSSコードから画像取得をしたい

このQ&Aのポイント
  • PHPを使ってRSSコードから画像取得をしたいと考えていますが、<content:encoded>や<description>以外の要素を見て抜き出すことはできないのでしょうか?
  • 例えばこのRSSコード内のhttp://ch.nicovideo.jp/kindan-nama/live?rss=2.0<nicoch:live_thumbnail>の要素を見てhttp://live.nicovideo.jp/thumb/175454.jpg↑この画像を取得することはできないのでしょうか?
  • 調べているうちにRSSは全ての情報を提供してくれているわけではないということは分かってきましたが、RSSコードを見てどこからどこまでが提供されているのかが分からず...
回答を見る
  • ベストアンサー

PHPを使ってRSSコードから画像取得をしたい

PHP初心者です。 PHPを使ってRSSコードから画像取得をしたいと考えていますが、 <content:encoded>や<description>以外の要素を見て抜き出すことはできないのでしょうか? 例えばこのRSSコード内の http://ch.nicovideo.jp/kindan-nama/live?rss=2.0 <nicoch:live_thumbnail>の要素を見て http://live.nicovideo.jp/thumb/175454.jpg ↑この画像を取得することはできないのでしょうか? 調べているうちにRSSは全ての情報を提供してくれているわけではないということは分かってきましたが、 RSSコードを見てどこからどこまでが提供されているのかが分からず... 何卒よろしくお願い致します。

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

【補足】 画像をHTML内に出力したいのであれば <p><?php $url = 'http://ch.nicovideo.jp/kindan-nama/live?rss=2.0'; $item = simplexml_load_file($url)->channel->item[0]; $src = $item->children('nicoch', true)->live_thumbnail; $alt = $item->title; printf('<img src="%s" alt="%s">', $src, $alt); ?></p> ブラウザに対して、PHPファイル自体を画像ファイルのように扱わせたいなら <?php $url = 'http://ch.nicovideo.jp/kindan-nama/live?rss=2.0'; $xml = simplexml_load_file($url); $src = $xml->channel->item[0]->children('nicoch', true)->live_thumbnail; header('Content-Type: image/jpeg'); readfile($src);

kikik617
質問者

お礼

ありがとうございます! SimpleXMLElement::children ↑これでいろいろな要素の値が見れるんですね! 非常に参考になりました。感謝します。

その他の回答 (1)

noname#244856
noname#244856
回答No.1

$url = 'http://ch.nicovideo.jp/kindan-nama/live?rss=2.0'; $xml = simplexml_load_file($url); echo $xml->channel->item[0]->children('nicoch', true)->live_thumbnail; SimpleXML http://jp.php.net/manual/ja/book.simplexml.php PHPでXMLの名前空間つきタグを読み込む http://blog.mach3.jp/2010/12/14/various-xml-on-php.html

関連するQ&A

  • RSSをMYSQLに入れる最適なコードがわからない

    テーブル接続→テーブル作成(必要か不明)→RSSをまとめる→RSSを取得→RSSをテーブルに入れる→RSSを表示をPHPで作成しているのですが、 RSSをテーブルに入れる最適なコードがわからず困っております。 insertを使用してRSSをテーブルに入れたいのですが、INSERT INTOはphpにいきなり書いてもエラーにならないのでしょうか?$を使用するほうの記載のほうが正しいのでしょうか? <?php require_once(dirname(dirname(dirname(dirname( __FILE__ )))) . '/wp-load.php' ); //ファイルの先頭で読み込む try { $dsn = 'mysql:dbname=ozvutmpq_wp1;host=localhost'; $user = 'ozvutmpq_wp1'; $password = 'Rn_&Zi$gWKae'; $dbh = new PDO($dsn,$user,$pass); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } //RSSをまとめる $url1 = [ 'http://', 'http://', 'http://',];//フィード登録1次元配列に foreach ($url1 as $url) { //複数のRSSを読み込むには?A.RSSのURLを配列に入れ、その配列をsimplexmlの引数にします。 $count = 0;//初期のカウント //RSSを取得 $rss = simplexml_load_file("$url"); // simplexml_load_file()でRSSをパース解析してオブジェクトを取得します。 $site_title = $rss->channel->title; // RSSタイトル取得 値の代入 自作関数 $post_thumbnail= $rss->channel->thumb; // RSSサムネイル画像取得 値の代入 自作関数 foreach ($rss->item as $item) { // この内側で $item を参照する if ($count >= 8) { break;//8件を超えたとき取得を終了する } $count++; $title = $item->title; // タイトル $link = $item->link; // リンク $thumb = $item->thumb->url; // アイキャッチサムネイル $content = $item ->description;// 詳細、必要なのか不明 date_default_timezone_set("Asia/Tokyo");//日時、タイトルとサムネイル画像だけほしいので要らない気がする $dc = $item ->children('http://purl.org/dc/elements/1.1/');//RSSの情報をPHPで取得するとき、[simplexml_load_file()]関数を使いますが、読み込むファイルの形式が[RSS 1.0]の場合、特殊な処理を施してあげないと正確に取得・表示することができません。 $day = date('Y/m/d H:i',strtotime($dc -> date));// RSS日付け取得 値の代入 自作関数 RSS1.0を取得したい場合「dc」の名前空間は「xmlns:dc="http://purl.org/dc/elements/1.1/"」 と定義されているので、これを引数として指定します。 $key = date('YmdGHis', strtotime($dc -> date));//DB等に入れやすい書式に変換 } } //RSSをテーブルに入れる INSERT INTO rssfeed (title, link, thumb,content)//テーブル名 VALUES ($title, $link,$thumb,$content now()) ON DUPLICATE KEY UPDATE up_date = now(); //名前を独自につける $item_insert_sql = "INSERT INTO $db_database.`rssfeed`(title, link, thumb, content) VALUES ('" . $title . "', '" . $link . "', '" . $thumb . "', '" . $content . "')";//mysql_queryとしてまとめてコードとして使うため?

    • ベストアンサー
    • MySQL
  • blogのRSSデータよりtitleとdateの取得を・・・

    RSSデータよりtitleとdateの取得を取得し、別ページに表示したいと考えています。 以前内容自体を表示させるものは、お手伝いいただきできるようになったのですが、titleなどを取得する事ができませんでした・・・ (以下がRSSより本文を取得して、表示するPHPコードの質問となります。) http://okwave.jp/kotaeru.php3?q=2053985 上記コードでtitle,dateを取得して、表示したいと考えています。 素人考えだと、$contents=$root->getElementsByTagName("encoded"); の部分で本文を取得しているので、これを$contents=$root->getElementsByTagName("title");などとして、取得できないかと試したのですが、うまくいきませんでした・・・ titleとdateの取得をして表示するコード・・・アドバイスでもいいですのでご教授の方お願い致します。

    • ベストアンサー
    • PHP
  • RSS取得の際に画像も取得したいのです。

    初めて質問させて頂きます。 これがPHPに限った質問なのかどうかもよくわかりませんが、どうかお願い致します。 自サイトに、レンタルブログのRSSを取得して更新を知らせたいと思っています。 大黒屋本舗さんのJAVAスクリプトなどを使ったことはあるのですが、 読み込むデータに画像を取得させることは不可能なのでしょうか? 調べても、キーワードが悪いのかヒットしません。 RSSを取得して、タイトルや日付などにプラスして、画像も表示させることは可能でしょうか?こういうふうにしたいんです。→右下のダイアリーhttp://www.bonobos.jp/ ここは取得するのがPHPなのかJAVAスクリプトなのか全然わかりませんが、index.htmlで表示出来ている、というのがミソです(私的に)phpは携帯との振り分けに使ってしまっているので、トップページをphpにすることは出来ないからです。 どうやってやればいいのでしょう?そういったスクリプトってないですか? 私は既存のスクリプトを多少改造出来る程度でほぼプログラミングはわかりません。 板違いでしたら申し訳ありません。 どうか、宜しくお願いします。m(_ _)m

    • 締切済み
    • PHP
  • RSSからblog(ブログ)の本文を抽出 特定のブログのRSSにて…

    以前、「RSSからblog(ブログ)の本文を抽出したい」という質問をした者です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1677591 以前ご教授いただいた方法でプログラムを作り、 javaのDOMを使ってRSSからブログの本文を抽出することができましたが、 (参考:http://www.hellohiro.com/xmldom.htm HelloWorldDOMPageList.java) 特定のブログのRSSからは本文のデータを取得することができませんでした。 例えば、exiteやFC2などのブログのRSSからはデータを取得することができませんでした。 リンクや、タイトルなどは問題なく取得できるのですが、 本文が記述されている要素(例えば、exiteならdescription,FC2ならcontent:encoded) 内のデータを取得しようとすると、プログラムの結果として、 何も取得できずに、空白となってしまいます。 ライブドアやヤフーなど他のブログのRSSでは成功したのですが… 何か問題があるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • XML
  • RSS URL 取得 判定

    PHPを使って、webサイトのURLからRSSのURLを取得したいと考えています。 curlなどを使って、RSS自体を取得するという意味ではなく、指定されたサイトのRSSの”URL”を取得したいです。 単純に正規表現などでlink要素をチェックして取得することもできますが、その方法だとlink要素などにRSSの情報を記載していないサイトなどからは取得することが出来ません。 100%とまではいかなくても、出来る限り確実な方法でRSSのURLを取得することはできないでしょうか?

    • ベストアンサー
    • PHP
  • 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
  • PHPで以下のサイトのrssの情報を獲得したいのですが、なぜか<ite

    PHPで以下のサイトのrssの情報を獲得したいのですが、なぜか<item>を獲得できません。 rss: http://twib.jp/rss phpコード: $rss =simplexml_load_file('http://twib.jp/rss'); print_r($rss); $title =$rss->channel->title; echo $title; foreach ($rss->channel->item as $item) { echo $item->title; echo $item->description; echo $item->link; echo $item->pubDate; } どなたか、どこを直せばよいか教えていただけないでしょうか。

    • 締切済み
    • PHP
  • PHP URL→HTML→取得→RSS出力

    PHP URL指定→HTMLソース→指定タグ要素取得(複数)→RSS(.xml)出力について URLからHTMLソースを取得し、要素を取得しRSSファイルを作りたいと思っています。 例えば、http://shopping.yahoo.co.jp/ranking/のURLのHTMLソース内から <p class="elPhoto"> <a href="○○○.html"> <img src="【取得したい文字列1】" width="200" height="200" alt="○○○"> </a> </p> <h4 class="elTitle"> <a href="【取得したい文字列2】">【取得したい文字列3】</a> </h4> <h4 class="elPrice"> <span>【取得したい文字列4】</span>円 </h4> <p class="elSellStatus"></p> <h4 class="elStore"> ストア:<a href="【取得したい文字列5】">【取得したい文字列6】</a> </h4> など指定する各要素を全件取得し、 <item> <title>【取得したい文字列3】</title> <link>【取得したい文字列2】</link> <description> 【取得したい文字列1】<br> 【取得したい文字列4】<br> 【取得したい文字列6】<br> 【取得したい文字列5】 </description> </item> などとRSSで全件出力し、xmlファイルを作成したいです。 アドバイス、ご指導お願いします。

    • 締切済み
    • PHP
  • RSSを取得したいのですが

    下記サイトを参考に、以下のコードを埋め込んだのですが、 http://plaza.rakuten.co.jp/kemusiro/diary/200601150000/ 日付が (1970/01/01 00:00:00) と表示された上に文字化けしてしまいます。 MagpieRSSはmagpierss-0.72.tar.gzから必要ファイルを、index.phpの下におきました。 正常に表示させるためには、どう直せばよいでしょうか? <?php require_once('magpierss/rss_fetch.inc'); define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); $count = 5; $length = 60; $url = 'http://api.plaza.rakuten.ne.jp/kemusiro/rss/'; $rss = fetch_rss($url); echo "<ul>"; array_splice($rss->items, $count); foreach ($rss->items as $item) { $href = $item['link']; $title = mb_convert_encoding($item['title'], "SJIS", "auto"); $date = date('Y/m/d H:i:s', parse_w3cdtf($item['dc']['date'])); $description = mb_convert_encoding($item['description'], "SJIS", "auto"); if (mb_strlen($description) > $length) { $description = mb_strcut($description, 0, $length) . "..."; } echo "<li>"; echo "<FONT color=\"#ff8040\">(" . $date . ")</FONT> "; echo "<a href=$href>" . $title . "</a><BR>"; echo $description . "</li>"; } echo "</ul>"; ?>

    • 締切済み
    • PHP
  • fopenの使い方?(画像の保存)

    お世話になります。 exif_thumbnailで取得したサムネイル画像をjpgファイルとして元画像ファイルとは別名で保存したいと考えています。 テストで以下のようなコードを作成しましたが、うまく保存できません。fopenの基本的な使い方が間違っているのではないかと思っていますが、どこがおかしいのかわからずにおります。 <?php $img = exif_thumbnail("./test.jpg", $width, $height, $type); $handle = fopen ("./thumb.jpg", 'a'); fwrite($handle, $img); ?> ちなみにPHPのバージョンは5.0.3です。 echo($img);でサムネイル画像が取得できていることは確認できております。 要はtest.jpg → $img → thumb.jpgとできればいいのですが。。 どうしたらうまく保存できますでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう