|
|
|
เทคนิค การอ่าน RSS ด้วย PHP แบบง่ายสุดๆ ลองเข้ามาดูกันครับ |
|
|
|
|
|
|
|
RSS หรือพวก News Feed เนี่ย จะมี Pattern เป็นโครงสร้างแบบ XML ที่กําหนดเอาไว้แล้ว ซึ่งถ้าเราเขียน PHP หรือ JavaScript ได้ก็สามารถที่จะดึงมันเข้ามาอ่านและถอดแท็ก XML ออกมาได้
เราคงไม่ต้องพูดถึงเรื่องของรูปแบบ RSS กัน แต่เราจะมาดูกันว่า การใช้ PHP ถอดแท็ก XML นั้น เราจะเรียกฟังก์ชั่นของ PHP ตัวหนึ่งที่ชื่อ xml_parse ดังตัวอย่าง
Code (PHP)
$fp=fopen("http://www.xyz.com/rss.xml","r");
while($data=fread($fp,4096))
{
xml_parse( $p, $data, feof($fp));
}
จากตัวอย่าง นี่ไงครับ เป็นการอ่านค่าเข้ามาจากเว็บ xyz.com/rss.xml คราวนี้ เมื่อเราอ่านเข้ามาด้วย PHP ได้แล้ว เราก็จะต้องถอดแท็ก โดยกําหนดฟังก์ชั่นที่ใช้ตอบรับเมื่อเจอแท็กต่างๆ เมื่อถอดมาแล้วเราก็จะเอามันเก็บไว้ในอาเรย์ ตรงนี้ก็เหมือนกับการเอาข้อมูล RSS ที่อ่านเข้ามา มาเก็บไว้ใน memory ชั่วคราว จากนั้นก็แสดงมันออกมาทีเดียวเลย ดังนี้
Code (PHP)
<?
$arr=array();
$count=0;
$block="ITEM";
$key="";
$value="";
function startxml( $parser , $name, $att)
{
global $key;
$key=$name;
}
function endxml( $parser, $name )
{
global $count;
global $block;
if ($name==$block)
{
$count=$count+1;
}
}
function cdata( $parser, $data )
{
global $key;
global $value;
global $count;
global $arr;
if (strlen($data)>1)
{
$value=$data;
$arr[$count]["$key"]=$value;
}
}
$p=xml_parser_create();
xml_set_element_handler( $p , "startxml" , "endxml");
xml_set_character_data_handler($p, "cdata" );
$fp=fopen("http://www.xyz.com/com_rss.xml","r");
while($data=fread($fp,4096))
{
xml_parse( $p, $data, feof($fp));
}
print("<font size=2></b>");
for ($i=1;$i<5;$i++)
{
echo "<img src=arrow.gif> <a href=", $arr[$i]["LINK"],">";
echo $arr[$i]["TITLE"];
echo "</a>";
echo "<br>";
}
?>
เอาล่ะครับ เพื่อให้เข้าใจมากขึ้น ให้ท่านลองรันโปรแกรมต่อไปนี้ดูนะครับ
Manager.php
Code (PHP)
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<?
$arr=array();
$count=0;
$block="ITEM";
$key="";
$value="";
function startxml( $parser , $name, $att)
{
global $key;
$key=$name;
}
function endxml( $parser, $name )
{
global $count;
global $block;
if ($name==$block)
{
$count=$count+1;
}
}
function cdata( $parser, $data )
{
global $key;
global $value;
global $count;
global $arr;
if (strlen($data)>1)
{
$value=$data;
$arr[$count]["$key"]=$value;
}
}
function openxml( $url )
{
$p=xml_parser_create();
xml_set_element_handler( $p , "startxml" , "endxml");
xml_set_character_data_handler($p, "cdata" );
$fp=fopen( $url ,"r");
while($data=fread($fp,4096))
{
xml_parse( $p, $data, feof($fp));
}
xml_parser_free($p);
}
?>
<h3>Travel<h3>
<?
openxml( "http://www.manager.co.th/RSS/Around/Around.xml" );
print("<font size=2></b>");
for ($i=1;$i<$count ;$i++)
{
echo "<a target=_blank href=", $arr[$i]["LINK"],">";
echo $arr[$i]["TITLE"];
echo "</a>";
echo "<br><br>";
}
?>
ผลการรันจะเป็นดังรูปในข้างต้น
Tag : PHP
|
|
|
|
|
|
Date :
2011-04-10 19:26:47 |
By :
laklaicom |
View :
5258 |
Reply :
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณสำหรับบทความดี ๆ ครับ แต่รูปหายน่ะครับ
|
|
|
|
|
Date :
2011-04-11 09:06:49 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่มีรูป อะ
|
|
|
|
|
Date :
2011-04-27 11:45:36 |
By :
leksoft |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แสดงผลออกมาเป็น ?????? แก้อย่าวไงครับ
|
|
|
|
|
Date :
2011-12-21 12:06:43 |
By :
berm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองดู iconv() ครับ สำหรับภาษาไทย
|
|
|
|
|
Date :
2011-12-21 20:29:17 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดึงได้ทุกเวป ยกเว้น pantip
ช่วยบอกที วิธีดึงข่าวจาก http://tech.pantip.com/rss/xml/it_news.xml
มันพิเศษกว่าอันอื่นยังใงครับ
|
|
|
|
|
Date :
2012-03-24 15:07:44 |
By :
akimura69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
|
|
|
|
|
Date :
2012-03-26 22:10:10 |
By :
toonandtark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
บรรดทัด <meta http-equiv="Content-Type" content="text/html; charset=windows-874">
เปลียนเป็น <meta http-equiv="Content-Type" content="text/html; charset=utf8">
|
|
|
|
|
Date :
2014-12-29 10:21:55 |
By :
ศรัญญู รัตนวิเชียร |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|