こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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を使えばできるような感じですが、記述方法が全く分かりません。
何を記述すれば、ランダム表示されますか。

投稿日時 - 2013-10-19 15:29:29

QNo.8311946

困ってます

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

<ul></ul>の間にインクルードしたいならばこんな感じでどうでしょうか。
http://pastebin.com/2RJjcPV4

SSIって最近使われているんですかね・・・?
恥ずかしながらSSI自体の存在を今まで知らなかったのですが、
正直わざわざこれを今採用するメリットは皆無に思えます。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1222187182

素直に読み込み元のファイルについて

「*.shtml」

「*.php」

「<!--#include virtual="上記phpファイルのアドレス" -->」

「<?php require('上記phpファイルへの相対パス'); ?>」

でいいんじゃないですかね。
読み込みもとのファイルはShift_JISで書かれていると思いますが、
この際全部UTF-8に変えちゃいましょう。
Shift_JISなんて今の時代デメリットばかりでメリット皆無です。
Windowsの「メモ帳」を使っているならば支障がありますが、
メモ帳を使うこと自体がナンセンスです。
世界の流れもご覧ください↓
http://news.mynavi.jp/news/2012/02/09/027/

最初の例を含め、参考にされている情報が非常に古いようなので、
賞味期限が切れていないんか確認するようにしましょう。

投稿日時 - 2013-10-21 19:40:38

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

連投失礼します。

更に訂正
$item->url → $item->link

投稿日時 - 2013-10-19 20:06:06

ANo.2

すいません肝心のシャッフル忘れてました(汗
$articlesに格納していくforeachを抜けた直後に shuffle($articles); と書いてください。

投稿日時 - 2013-10-19 20:02:17

ANo.1

参考にされているサイトはこちらでしょうか・・・?
http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS

このサイトの情報はとても古いので参考にしないでください。


【このコードの問題点】

・現在はMagpieRSSを使わなくてもPHPに標準実装されている
 SimpleXML関数を使えばこの目的は実現できる。
・現在はShift_JISが使われることは稀で、
 UTF-8でページを作成することがほとんどである。
 jcode.phpを通う必要性も無い。
・$item[title] ではなく $item['title'] としないと、E_NOTICEが発生する。

サンプル
http://pastebin.com/xLZNjGJ9

投稿日時 - 2013-10-19 20:00:58

補足

早速、回答有難うございます。
記述方法で質問です。

【PHP外部ファイルの中身】
<?php

$url = 'xmlのURL';
$xml = @simplexml_load_file($url);
$articles = array();

if ($xml) {
$title = (string)$xml->channel->title;
foreach ($xml->channel->item as $item) {
$articles[] = array(
'url' => (string)$item->url,
'title' => (string)$item->title,
'description' => mb_strimwidth(
(string)$item->description,
0,
120,
'...',
'UTF-8'
),
);
}
} else {
$title = '取得失敗';
}

header('Content-Type: text/html; charset=utf-8');

?>

と記述すると、
これを読みだすための本文に記述する文字は何でしょうか。
<ul>
<!--#include virtual="../magpie/other_rss.php" -->
</ul>
のような文は何でしょうか。

投稿日時 - 2013-10-21 09:46:35

あなたにオススメの質問