ウェブ学のすすめ

Study of Web Design & Programing

PHPを利用してRSSを取得&表示する

PHPを利用してRSSxmlファイルを取得し、ブログの最新記事一覧を表示してみました。jQuery Mobileを使用したのでスマートフォンからでも快適に見れるようになっています。

プレビュー

jQueryMobileとPHPのsimplexml

QRコード

※おすすめQRコード読み取りアプリ

お父さんQR
カテゴリ: ユーティリティ
サイズ: 2.3 MB
価格: 無料

ポイント

【simplexml_load_file】RSSXMLファイルを読み込む
<?php
$rss = simplexml_load_file("rss・xmlファイルのパス");
?>

参考:PHP: simplexml_load_file - Manual

【file_get_contents】ファイルの内容を全て文字列に読み込む
<?php
$url = 'rss・xmlファイルのパス';
$rss = file_get_contents($url);
$xml = simplexml_load_string($rss);
?>

参考:

コード

index.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>jQueryMobileとPHPのsimplexml</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css">
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
<style>
.ui-li-aside {
  width: auto;
}
.ui-li .ui-btn-text a.ui-link-inherit {
    white-space: normal;
}
</style>
</head>
<body>
<div data-role="page" id="index">
<div data-role="header">
<a href="page2.php" data-icon="arrow-r" class="ui-btn-right">次へ</a>
<h1>最新ブログ記事</h1> 
</div>
<div data-role="content">
<ol data-role="listview" data-inset="true" data-theme="c">
<li data-role="list-divider">最新記事</li>
<?php
$rss = simplexml_load_file("http://d.hatena.ne.jp/vinton/rss");
$i = 0;
foreach($rss -> item as $item){
  if($i>5)break;
  $dc = $item ->children('http://purl.org/dc/elements/1.1/');
  $link = $item ->link;
  $title = $item ->title;
  $date = date("Y/m/d",strtotime($dc -> date));
  echo "<li><a href=\"$link\" title=\"$title\" target=\"_blank\"><p class=\"ui-li-aside\">$date</p>$title</a></li>\n";
}
?>
</ol>
</div>
<div data-role="footer">
<h4>&copy; 2012 vinton </h4>
</div>
</div>
</body>
</html>
page2.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>jQueryMobileとPHPのsimplexml</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css">
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
<style>
.ui-li-aside {
  width: auto;
}
.ui-li .ui-btn-text a.ui-link-inherit {
    white-space: normal;
}
</style>
</head>
<body>
<div data-role="page" id="page2">
<div data-role="header">
<h1>Yahoo! トピックス</h1>
<a href="index.php" data-icon="back">戻る</a>
<a href="page3.php" data-icon="arrow-r" class="ui-btn-right">次へ</a>
</div>
<div data-role="content">
<ol data-role="listview" data-inset="true" data-theme="c">
<li data-role="list-divider">RSSを表示</li>
<?php
$url = 'http://rss.dailynews.yahoo.co.jp/fc/rss.xml';
$rss = file_get_contents($url);
$xml = simplexml_load_string($rss);

$channel = $xml->channel;
  foreach ($channel->item as $item) {
    $link = $item->link;
    $title = $item->title;
    $date = date("Y年m月d日");
    echo "<li><a href=\"$link\" title=\"$title\" target=\"_blank\"><p class=\"ui-li-aside\">$date</p>$title</a></li>\n";
  }
?>
</ol>
</div>
<div data-role="footer">
<h4>&copy; 2012 vinton </h4>
</div>
</div>
</body>
</html>
page3.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>jQueryMobileとPHPのsimplexml</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css">
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
<style>
.ui-li-aside {
  width: auto;
}
.ui-li .ui-btn-text a.ui-link-inherit {
    white-space: normal;
}
</style>
</head>
<body>
<div data-role="page" id="page3">
<div data-role="header">
<h1>アップル - ホットニュース</h1>
<a href="page2.php" data-icon="back">戻る</a>
</div>
<div data-role="content">
<ol data-role="listview" data-inset="true" data-theme="c">
<li data-role="list-divider">RSS から取得して表示</li>
<?php
$url = 'http://www.apple.com/jp/main/rss/hotnews/hotnews.rss';
$rss = file_get_contents($url);
$xml = simplexml_load_string($rss);

$channel = $xml->channel;
  foreach ($channel->item as $item) {
    $link = $item->link;
    $title = $item->title;
    $date = date("Y年m月d日");
    echo "<li><a href=\"$link\" title=\"$title\" target=\"_blank\"><p class=\"ui-li-aside\">$date</p>$title</a></li>\n";
  }
?>
</ol>
</div>
<div data-role="footer">
<h4>&copy; 2012 vinton </h4>
</div>
</div>
</body>
</html>