一覧 |
コード登録画面
RSS1.0 [ 2005年10月25日 ]
<?php
/**
* rss1.0モジュール?
* 概要
* RSS1.0のニュースフィードに必要なRDFドキュメントを返すクラス
* RDFドキュメントの一部を返すだけなので出力先はユーザー任せです。
*
* @since PHP4.0.6
* @Autho kousaku
*
* [usage]
* 1. HTTPヘッダーを出力
* header(rss10::httpHeader());
*
* 2. xmlヘッダー( ? etc. ???)を出力
* echo rss10::header(string about, string title, string link, string description);
* :about データーの参照元?たぶんURL rdf:about=http://sample.com/rss10 ってなる
* :title ニュースフィード全体のタイトル。rss10::liの時にcreatorを指定しなければこれが送信者になる
* :link よく分からん
* :description 紹介文?何か書きたければどうぞ。
*
* 3. 記事をrdfリストに変換
* echo rss10::li(string resource, int timestomp, string title, [string creator, string description])
* :resource 更新(?)された記事のURL
* :timestomp 更新日時のタイムスタンプ(秒)
* :title タイトル、件名
* :creator 作者、送信者?
* :description 本文?
*
* 4. タグを閉じておわり
* echo rss10::footer();
*
* 終わり
*/
if(!defined("RSS_ENCODING")) define("RSS_ENCODING","UTF8");
if(!defined("SOURCE_ENCODING")) define("SOURCE_ENCODING","auto");
class rss10
{
function httpHeader(){
return 'Content-type: application/xml; charset='.RSS_ENCODING;
}
function header($about, $title, $link = NULL, $description = NULL)
{
$buffer = '<?xml version="1.0" encoding="'.RSS_ENCODING.'"?>'."\n\n<rdf:RDF";
$buffer .= " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
$buffer .= " xmlns=\"http://purl.org/rss/1.0/\">\n\n";
//channel
rss10::amp($about);
$buffer .= ' <channel rdf:about="'.$about.'">'."\n";
//link
if (is_null($link)) {
$link = $about;
} else {
rss10::amp($link);
}
$buffer .= " <link>".$link."</link>\n";
//title
rss10::convert($title);
$buffer .= " <title>".$title."</title>\n";
//description
if ($description)
{
rss10::convert($desvription);
$buffer .= " <description>".$desvription."</description>";
}
return $buffer." <items>\n <rdf:Seq>\n";
}
function li($resource, $time, $title, $creator = NULL, $description = NULL)
{
//変換
rss10::formatDate($time);
rss10::convert($title);
if($creator) rss10::convert($creator);
if($description) rss10::convert($description);
rss10::amp($resource);
//return RDF:li
return <<<EOD
<rdf:li rdf:resource="$resource" />
<item rdf:about="$resource">
<title>$title</title>
<link>$resource</link>
<dc:date>$time</dc:date>
<dc:creator>$creator</dc:creator>
<description>$description</description>
</item>
EOD;
}
function footer()
{
return " </rdf:Seq>\n </items>\n </channel>\n</rdf:RDF>";
}
function amp(&$str)
{
$str = ereg_replace('&','&',$str);
}
function convert(&$str)
{
$str = @mb_convert_encoding($str, RSS_ENCODING, SOURCE_ENCODING);
}
function formatDate(&$time)
{
$time = substr_replace(date('Y-m-d\TH:i:sO',$time),':',-2,0);
}
}
?>
投稿者:ach