複数のサイトのRSSを読み込み、一覧表示するページを作っています。
下記の記述だと一つのRSSしか表示できませんでした、
どうすれば$rssに他のRSSも混ぜる事ができますでしょうか。
宜しくお願い致します。
<?php
require_once("XML/RSS.php");
?>
<?php
/**
* RSSファイルへのURIをコンストラクタの引数に渡す
*/
$rss =& new XML_RSS("http://www.doyouphp.jp/home.rss");
/**
* RSSファイルをパースする
*/
$rss->parse();
echo "<h1><a href=¥"http://www.doyouphp.jp/¥">Do You PHP?</a>のヘッドライン</h1>¥n";
echo "<ul>¥n";
/**
* getItemsメソッドを使用して全item要素を取得し、表示する
*/
foreach ($rss->getItems() as $item) {
echo "<li><a href=¥"" . $item['link'] . "¥">" .
mb_convert_encoding($item['title'], mb_internal_encoding(), 'auto') .
"</a></li>¥n";
}
echo "</ul>¥n";
?>
例えばですが
$aUrlList = array("URL1","URL2",…);
としてリストを作っておいて
foreach($aUrlList as $key => $value){
$rss =& new XML_RSS($value);
~以下パース処理等~
}
とすることで、順番に取得する事が出来ます。
混在で、ということですね、失礼しました。
では以下の手順ではいかがでしょうか。
$aUrlList = array("URL1","URL2",…);
foreach($aUrlList as $key => $value){
$rss =& new XML_RSS($value);
ここまでは同じですが、取得した値を別の配列に格納します。
その時、日付を同じ形式にしてください。
例:
$array[$key]['date'] = タイムスタンプ等
$array[$key]['title'] = タイトル
$array[$key]['url'] = URL
こうすることで
$array[0]['date'] = タイムスタンプ1
$array[0]['title'] = タイトル1
$array[0]['url'] = URL1
$array[1]['date'] = タイムスタンプ2
$array[1]['title'] = タイトル2
$array[1]['url'] = URL2
~以下略~
の形式となります。
出来上がった配列を、以下の関数でソートしてあげてください。
usort($array , "cmp");
function cmp($a , $b){
return $a['date'] >= $b['date'];
}
$array の内容を、cmp という function に渡し、date で比較をし、ソートします。
比較を逆にすれば、並びも逆になります。
こうすると、$array の値がソートされます。
ご回答ありがとうございます。
教えて頂いたように試しているのですが、、、知識が乏しく苦戦中です。
頑張ってみます。
ご回答ありがとうございます!
教えて頂いたやり方で順番に表示できました。
ただ、URL1とURL2のrss情報を1つにまとめて、日付順番に表示したいのです。
説明足らずで申し訳ございません。。。
自分用のhttp://wwwwwwww.ws/のサイトのようなページを作りたかったのです。