2006/Feb/10

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 {

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;
}
}
}
}




เวลาที่เราเรียกใช้Class RSSParserสามารถเรียกใช้ได้โดย



$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 ภายในครั้งเดียว


ชื่อ: 
เว็บไซต์: 
คอมเมนต์:




smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry
---
ขอบคุณนะคะ

แต่ยังทำมะเปงอ่ะ ...

รอยหยักไม่ค่อยคมอ่ะ
#1  by  Coffee mania At 2006-02-10 11:47, 
อืมม~
(เสียงขานรับของความเข้าใจมากขึ้น...มั้งนะ )
#2  by  *ออม* At 2006-02-10 11:54, 
ถ้าเป็นพวกที่มีอยู่แล้วใน Firefox ก็ใช้ได้เหมือนกันใข่ไหมครับ
#3  by  Yashima At 2006-02-10 12:18, 
ใช่ครับ
#4  by   (58.10.125.243) At 2006-02-10 15:45, 
พอดีลองทำแล้วครับแล้วตัวอักษรที่เป็นภาษาไทยมันเป็น ?????? แก้ยางไงดีครับ
#5  by  GetStart (203.154.50.22 /203.158.160.253) At 2006-04-18 22:55, 
ไม่ทราบว่าผู้ใช้ท่านอื่นเอาไปใช้แล้วเจอปัญหาเหมือนผมไหมครับผม แก้ยังไงดีครับ เป็นที่ html tage หรือว่าเป็นที่ xml ครับ
#6  by  GetStart (203.154.50.22 /203.158.160.253) At 2006-04-20 15:18, 
ที่เป็นเช่นนั้นก็เพราะว่า ตัว source file encoding เป็น utf-8 ครับ
<?xml version="1.0" encoding="utf-8" ?>
วิธีแก้ หน้าที่จะแสดงต้อง encoding เป็น utf-8 ด้วยครับ
หรือ จะใช้ php convert เป็น encode ที่สนับสนุน ภาษาไทย เช่น TIS-620 ก็ได้
<?php
echo iconv("UTF-8", "TIS-620", "This is a test.");
?>
#7  by  Code SNippet At 2006-04-20 18:04, 
ขอบคุณมากครับสำหรับคำตอบ

แต่ว่าเอา โค้ดไปใส่ตรงนี้หรือเปล่าครับ
$fp=fopen(iconv("UTF-8","TIS-620","http://www.narisa.com/aggregator/rss20.xml"),"r")
แต่พอผมทำแล้วมันไม่ออกเหมือนเดิม
#8  by  GetStart (203.154.50.22 /203.158.160.253) At 2006-04-26 01:44, 
iconv("UTF-8","TIS-620",$this->title);
เป็นต้น
#9  by  Code SNippet At 2006-04-26 10:43, 
พอดีลองทำเหมือนกันครับ แต่ทำไม่ได้ แก้โค้ดให้เป็นภาษาไทยตรงไหนครับ
#10  by  tobeenumbero At 2006-05-03 01:18, 
ใช้ function iconv ตรงส่วนที่จะแสดงเป็นภาษาไทยคับ
#11  by  Code SNippet At 2006-05-03 09:46, 

<< Home