YoutubeのRSSの読み込み、表示についての質問

このQ&Aのポイント
  • WordpressMUを元にポータルサイト的なものを作成中。TOPページに特定のタグの検索結果をRSSで読み込んで表示したい。
  • 参考サイトのコードを利用したが、表示される情報がタイトルとサムネイルと時間以外に余分な情報も表示されてしまう。
  • 細分化した情報を読み込む方法はあるか質問。初歩的な質問とは思うが、お助けいただけると幸い。
回答を見る
  • ベストアンサー

YoutubeのRSSの読み込み、表示についての質問

YoutubeのRSSの読み込み、表示についての質問 過去に似たようなものがありましたがかなり前のものなので新たに質問させていただきます。 現在WordpressMUを元にポータルサイト的なものをPHPの知識が殆ど無い状態で作っています。 機能の一つとして本体のTOPページにYoutubeの特定のタグの検索結果をRSSで読んで表示したいと思っているのですが 参考にさせて頂いたサイトのコードが <?php $rss = fetch_rss('rssをここに入力'); $maxitems = 1; $items = array_slice($rss->items, 0, $maxitems); if (empty($items)) echo 'No items'; else foreach ( $items as $item ) : ?> <a href="<?php echo $item['link']; ?>" title="<?php echo $item['title']; ?>" target="_blank"><?php echo $item['description']; ?></a> <?php endforeach; ?> となっておりまして、検索結果のRSSを入力すると、表示はされるのですが [description]のくくりなので余計な情報が入ってしまいます。 表示したいのはタイトルとサムネイルと時間くらいなので もっと細分化して読み込みたいのですが何かいい方法はございませんでしょうか? PHPが分かる方にとってはあまりに初歩的な質問かと思われますが どうかよろしくお願い致します。

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

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

  • ベストアンサー
回答No.1

とりあえず、恐らくmagpierssとかを利用されているのだと思います。(検索したら似たようなコードがあったので。) とりあえず、Youtubeから、RSSの返す内容を確認しました。 http://www.youtube.com/rssls?gl=JP&hl=ja このURLを参考にして、返ってくる値を見たのですが、これでいいんですかね。(descriptionがみつからなかった。) とりあえず、$item['description']の内容が上記URLないのサンプルを叩いたときに取得されるフィードの内容と一緒で、HTMLが記述されているようなものなのであれば、 if (empty($items)) echo 'No items'; else foreach ( $items as $item ) : $desc = $item['description']; if(preg_match('|http://i.ytimg.com/vi/[^/]+/default.jpg|', $desc, $m)){ $desc = $m[0]; } ?> <a href="<?php echo $item['link']; ?>" title="<?php echo $item['title']; ?>" target="_blank"><?php echo $desc; ?></a> <?php endforeach; ?> こんな感じに書きなおしてやればとりあえずは取得されるかと思います。(正規表現で該当箇所のみ抜いてくる) 多少強引ですが、他に使えそうな要素がないのであればこのようにするしか方法はなさそうです。

clemon
質問者

お礼

なるほど、貰った内容をこちらでどうにかするというのがベターな考え方なのですね 頂いたコードを参考に研究させていただきます! どうもありがとうございました!

関連するQ&A

  • WordpressのRSS取得条件

    以下のコードに2010年以降のフィードのみ表示させるようにするにはどうすればよいですか? <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed(array('RSSフィード')); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(10); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?> <dl> <?php if ($maxitems == 0) echo '<dt>No items.</dt>'; else foreach ( $rss_items as $item ) : ?> <dt> <?php echo $item->get_feed()->get_title(); ?><br /> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a> </dt><?php endforeach; ?></dl>

    • 締切済み
    • PHP
  • [wordpress]外部RSSを「文字数制限」してリストで取得[php]

    初めまして。 wordpress、php初心者です。 タイトル通り、外部のRSSを自分のサイトで、 リスト表示させようと思っています。 ------------ <h1><?php _e('Headlines from Yahoo ITmedia News'); ?></h1> <?php // Get RSS Feed(s) include_once(ABSPATH . WPINC . '/rss.php'); $rss = fetch_rss('http://headlines.yahoo.co.jp/rss/itmedia_n.xml'); $maxitems = 5; $items = array_slice($rss->items, 0, $maxitems); ?> <ul> <?php if (empty($items)) echo '<li>No items</li>'; else foreach ( $items as $item ) : ?> <li><a href='<?php echo $item['link']; ?>' title='<?php echo $item['title']; ?>'> <?php echo $item['title']; ?> </a></li> <?php endforeach; ?> </ul> ------------ 上記のソースで表示はひとまずできました。 あと、これを文字数制限(たとえば10文字以上は「…」)で表示 としたいのですが、どうしたらいいのでしょうか? ------------ <?php $title= mb_substr($post->post_title,0,10); echo '<h1>'.$title.'…</h1>'; ?> ------------ 上記の「mb_substr(」を組み合わせればできそうなのですが、 理解不足な分、うまくいきません。 誰が、教えてください。よろしくお願いします。

    • ベストアンサー
    • 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
  • RSSに関して

    こんばんは。お世話になっております。 只今、テスト的に以下のサイトのソースを参考に、登録していただいた方のブログの一覧表示(更新題名が1件ずつ)が出来るように組んでいるのですが、非常に重たく、他に上手いやり方がある?などと色々と試行錯誤を繰り返している状況です。 http://works.xrea.jp/headline.php イメージ的に、登録してくれた会員のブログを、ブログランキングサイトのように、検索一覧として1件ずつ更新記事(題名)を表示させたいと考えてます。 ソースの流れは、 while($row = mysql_fetch_array($res, MYSQL_ASSOC)){  $url = $row["url"];  require("./rss_index/rss-test.php");  ・  ・ 以上、検索ファイル 以下、rss-test.php <?php require_once 'rss_fetch.inc'; $url = $url; $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "EUC-JP", "auto"); echo "<h5>$title</h5>\n"; $rss->items = array_slice($rss->items, 0, 1); foreach ($rss->items as $item ) { $title = $item[title]; $title = mb_convert_encoding($title, "EUC-JP", "auto"); $url = $item[link]; echo "<li><a href=\"$url\">$title</a></li>\n"; } ?> 以上、お忙しい中恐縮ですが、ご指摘も含めアドバイスなど頂けたら幸いです。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • MagpieRSSでRSSを取得し、ランダムに表示

    <?php require_once 'rss_fetch.inc'; require_once 'code_table.ucs2jis'; require_once 'jcode.php'; $url = 'xmlアドレス'; $rss = fetch_rss($url); $title = $rss->channel['title']; //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]; $description = $item[description]; $description = mb_convert_encoding($description, "Shift_JIS", "auto"); $description = mb_strimwidth($description, 0, 120, "" , "Shift_JIS"); echo "<li><a href=\"$url\">$title</a><br>$description</li>\n"; } ?> と記述し、 <ul> <!--#include virtual="上記phpファイルのアドレス" --> </ul> でサイトにRSSを表示しているのですが、 通常上が新しいものが表示されているのですが、 これをランダムに表示したいと考えています、 shuffleを使えばできるような感じですが、記述方法が全く分かりません。 何を記述すれば、ランダム表示されますか。

    • ベストアンサー
    • PHP
  • MagpieRSSを使用して自分のHPにxmlを表示させる方法

    お世話になります。 データベースよりxmlを生成し、自分のHPに1ページに埋め込みたいと思っています。 いろいろなサイトを参考に、MagpieRSSを使用して表示させたいのですが、コードのサンプルに記載されている他サイトのRSS・xmlは表示できるのですが、ローカルのxmlは下記のエラーが出てしまい表示できません。 Warning: MagpieRSS: Failed to parse RSS file. (not well-formed (invalid token) at line 9, column 21) in /aaa/rss/rss_fetch.inc on line 238 変更した部分は、表示するxmlのURLのみです。 使用しているphpのバージョンは4.34、MagpieRSSのバージョンは0.72です。 問題のrss.phpのソース↓ <?php require_once 'rss_fetch.inc'; define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); $url = 'http://www.aaa.com/rss.xml'; $rss = fetch_rss($url); if ($rss && !$rss->ERROR) { drawRSS($rss); }else{ echo "取得できませんでした。"; } function drawRSS($rss){ $items = array_slice($rss->items, 0, 10); echo "<ul>\n"; foreach ($items as $item ) { $title = $item[title]; $title = mb_convert_encoding($title, "UTF-8", "auto"); $url = $item[link]; $description = $item[description]; $description = mb_convert_encoding($description, "UTF-8", "auto"); echo "<li><a href=\"$url\">$title</a></li>\n$description"; } echo "</ul>\n"; } ?> 何か、対処方法をご存知の方教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • XML
  • PHPのレイアウトを指定するCSSの書き方

    http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/fetch_feed 上記サイトのPHPを利用したいのですが、フォントや枠を指定するスタイルシートの書き方を教えて欲しいです。 これがPHPの構文です。 <h2><?php _e('Recent news from Some-Other Blog:'); ?></h2> <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed('http://example.com/rss/feed/goes/here'); if (!is_wp_error( $rss ) ) : $maxitems = $rss->get_item_quantity(5); $rss_items = $rss->get_items(0, $maxitems); endif; ?> <ul> <?php if ($maxitems == 0) echo '<li>No items.</li>'; else foreach ( $rss_items as $item ) : ?> <li> <a href='<?php echo $item->get_permalink(); ?>' title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'> <?php echo $item->get_title(); ?></a> </li> <?php endforeach; ?> </ul> スタイルシートで出てきたページの例文を、PHPの構文を挟むように記述してみたりしたのですが、真っ白になって表示できなくなったりしますし、フォント指定と枠指定の組み合わせ方もわかりません。 一からというと申し訳ないですが、どなたか例文を記述いただけると嬉しいです。 サンプルの修正からでしたら、間違えながらも自分がしたいように持っていけると思いますので・・・

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

    PHPパーサーのMagpieRSSを使用しています。 読み込むxmlが更新されてもそれが反映されません。 また、htmlとして書き出す際に<p>タグにid名を付けたいのですが、idをつけるとエラーがでます。これはPHPでは文法的にまずいんでしょうか?下記が使用しているソースです。 重ねて質問なんですが、下記のソースでは1つのxmlしか読み込んでいませんが、複数のxmlを読み込むにはどうしたらいいのでしょうか。 よろしくお願いします。 <?php require_once 'rss_fetch.inc'; require_once 'rss_utils.inc'; $url = 'http://www.xxxxx/xxxxxx/index.xml'; $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); $rss->items = array_slice($rss->items, 0, 1); foreach ($rss->items as $item ) { $description = $item[description]; $description = mb_convert_encoding($description, "UTF-8", "auto"); $url = $item[link]; $date = date("Y.m.d", $item['date_timestamp']); echo "$description?n"; } ?>

    • ベストアンサー
    • 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
  • 自分のHPにRSSを表示させたい

    試しに、h●●p://www.okinawainfo.net/rss10.xmlを表示させたく htdocs内のrss.phpファイルに <dl> <?php $rss = simplexml_load_file("h●●p://www.okinawainfo.net/rss10.xml"); $i = 0; foreach ($rss->channel->item as $item) { if( $i++ == 5 ) { break; } $link = $item->link; $title = $item->title; $date = date('Y.m.d', strtotime($item->pubDate)); $desc =$item->description; echo '<dt>' . $date . '</dt>'; echo '<dd><a href="' . $link . '" target="_blank">' . $title . '</a></dd>'; } ?> </dl> と、打ち込みました。 ですが、エラーが出ます。 エラーは… Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 404 localhost 2011/12/09 4:19:28 Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1 ↑と出ます。 何故でしょうか><

専門家に質問してみよう