xml_parse_into_structを使うことで簡単にRSSを処理することが出来ます。
サンプルの実行には、fopenで外部ファイルを開けるよう、php.iniの設定で、allow_url_fopenを設定しておく必要があります。
<?php
// 外部RSSを簡単に読み込んで出力するルーチン
$RSSURL = "http://www3.asahi.com/rss/index.rdf";
$buff = "";
$fp = fopen($RSSURL,"r");
while ( !feof($fp) ) {
$buff .= fgets($fp,4096);
}
fclose($fp);
// パーサ作成
$parser = xml_parser_create();
// パーサオプションを指定
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
// パース実行、連想配列にパース結果代入
xml_parse_into_struct($parser,$buff,$values,$idx);
// パーサ開放
xml_parser_free($parser);
// パースして得た連想配列をまわす
$in_item = 0;
foreach ($values as $value) {
$tag = $value["tag"];
$type = $value["type"];
$value = $value["value"];
$tag = strtolower($tag);
if ($tag == "item" && $type == "open") {
$in_item = 1;
} else if ($tag == "item" && $type == "close") {
echo <<<EOM
$title<br>
$link<br>
$description<hr>
EOM;
$in_item = 0;
}
if ($in_item) {
switch ($tag) {
case "title":
// UTF-8なドキュメントの場合ここで
// $value = mb_convert_encoding($value, "EUC-JP", "UTF-8"); などする必要あり
$title = $value;
break;
case "link":
$link = $value;
break;
case "description":
// UTF-8なドキュメントの場合ここで
// $value = mb_convert_encoding($value, "EUC-JP", "UTF-8"); などする必要あり
$description = $value;
break;
}
}
}
?>
スポンサードリンク
PHPサンプル集