Rssfeed นี้มาแรงดีจิงเติบโตมาพร้อมกับเวบข่าว เวบ Blog Rss ก็คือ xml ชนิดหนึ่งนะครับถ้าจะถามว่า xmlคืออะไรอีกยาวเลยครับทีนี้ ขอข้ามก่อน เรามีrss file ของเวบหนึ่งจะเอามาใช้ได้อย่างไร??วันนี้เรามาใช้phpมาอ่านหรือ parsingRss fileกันเอา caseไกล้ๆตัวหน่อย จะอ่านRss ของblogนี้ต้องเขียนยังไง
อันดับแรกเลยที่เราต้องมีก็คือ
http://codesnippet.exteen.com/rss
เจ้าlinkแบบนี้ครับ เปิดมาก็เจอ xmlที่ประกอบไปด้วยหัวข้อ entryของเรา เวลาที่เรามีentryใหม่เจ้าตัวRss ก็สามารถบอกentryที่เรา updateใหม่ทันทีเพราะฉะนั้นเราต้องมีRssParseเป็นตัวอ่านRss Feed ของเรา
<?phpเวลาที่เราเรียกใช้Class RSSParserสามารถเรียกใช้ได้โดยclass RSSParser {
var $insideitem = false;
var $tag = "";
var $title = "";
var $description = "";
var $link = "";
var $title_tha="";
var $desc="";function startElement($parser, $tagName, $attrs) {
if ($this->insideitem) {
$this->tag = $tagName;
} elseif ($tagName == "ITEM") {
$this->insideitem = true;
}
}function endElement($parser, $tagName) {
if ($tagName == "ITEM") {
printf("<dt><b><a href='%s'>%s</a></b></dt>",
trim($this->link),$this->title);
printf("<dd>%s</dd>",$this->description);
$this->title = "";
$this->description = "";
$this->link = "";
$this->insideitem = false;
}
}function characterData($parser, $data) {
if ($this->insideitem) {
switch ($this->tag) {
case "TITLE":
$this->title .= $data;
break;
case "DESCRIPTION":
$this->description .= $data;
break;
case "LINK":
$this->link .= $data;
break;
}
}
}
}
$xml_parser = xml_parser_create();
$rss_parser = new RSSParser();
xml_set_object($xml_parser,&$rss_parser);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen("http://codesnippet.exteen.com/rss","r")
or die("Error reading RSS data.");
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($xml_parser);
เท่านี้เราก็สามารถเรียกดู Blog ได้หลายๆ Blog ภายในครั้งเดียว
)