狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

如何用PHP把RDF內容插入Web網站之中(4)

如何用PHP把RDF內容插入Web網站之中(4)

更新時間:2024-04-09 文章作者:未知 信息來源:網絡 閱讀次數:

返回到類(Back To Class)

既然你有這么大的權力,那么究竟為什么要把自己限制在僅僅是單個的RDF來源呢?就象我早先說過的一樣,大多數主要的站點都經常為他們所提供的內容做快照。其實將所有這些不同的來源插入到你的站點當中是相當簡單的。讓我們看看是如何做的。

首先,我們把前面例子中的代碼模塊化。這樣一來,你就無須為每一個單個的來源都一遍又一遍的重寫相同的代碼了。簡化的方法就是將之打包成類,再把這個類包含到我的PHP腳本當中。

類代碼如下:

<?
class RDFParser
{
//
// variables
//

// set up local variables for this class
var $currentTag = "";
var $flag = "";
var $count = 0;

// this is an associative array of channel data with keys
("title", "link", "description")
var $channel = array();

// this is an array of arrays, with each array element
representing an <item>
// each outer array element is itself an associative array
// with keys ("title", "link", "description")
var $items = array();


//
// methods
//

// set the name of the RDF file to parse
// this is usually a local file
// you may set it to a remote file if your PHP build supports
URL fopen()
function setResource($file)
{
$this->file = $file;
}


// parse the RDF file set with setResource()
// this populates the $channel and $items arrays
function parseResource()
{
// create parser
$this->xp = xml_parser_create();

// set object reference
xml_set_object($this->xp, $this);

// set handlers and parser options
xml_set_element_handler($this->xp, "elementBegin",
"elementEnd");
xml_set_character_data_handler($this->xp,
"characterData");
xml_parser_set_option($this->xp,
XML_OPTION_CASE_FOLDING, TRUE);
xml_parser_set_option($this->xp, XML_OPTION_SKIP_WHITE,
TRUE);

// read XML file
if (!($fp = fopen($this->file, "r")))
{
die("Could not read $this->file");
}

// parse data
while ($xml = fread($fp, 4096))
{
if (!xml_parse($this->xp, $xml, feof($fp)))
{
die("XML parser error: " .
xml_error_string(xml_get_error_code($this->xp)));
}
}

// destroy parser
xml_parser_free($this->xp);
}

// opening tag handler
function elementBegin($parser, $name, $attributes)
{
$this->currentTag = $name;
// set flag if entering <channel> or <item> block
if ($name == "ITEM")
{
$this->flag = 1;
}
else if ($name == "CHANNEL")
{
$this->flag = 2;
}
}

// closing tag handler
function elementEnd($parser, $name)
{
$this->currentTag = "";

// set flag if exiting <channel> or <item> block
if ($name == "ITEM")
{
$this->count++;
$this->flag = 0;
}
else if ($name == "CHANNEL")
{
$this->flag = 0;
}
}

// character data handler
function characterData($parser, $data)
{
$data = trim(htmlspecialchars($data));
if ($this->currentTag == "TITLE" || $this->currentTag ==
"LINK" || $this->currentTag == "DESCRIPTION")
{
// add data to $channels[] or $items[] array
if ($this->flag == 1)
{

$this->items[$this->count][strtolower($this->currentTag)] .= $data;
}
else if ($this->flag == 2)
{

$this->channel[strtolower($this->currentTag)] .= $data;
}
}
}

// return an associative array containing channel information
// (the $channel[] array)
function getChannelInfo()
{
return $this->channel;
}

// return an associative array of arrays containing item
information
// (the $items[] array)
function getItems()
{
return $this->items;
}

}
?>
如果你對PHP類較為熟悉的話,那么理解這段代碼是相當容易的。如果不太懂的話,那么請直接跳到文章末尾的鏈接部分,看一篇關于類工作原理的好文章。然后在回來繼續閱讀上面的代碼。

在使用這個類之前,我要特別花幾分鐘指出其中的一行代碼——即上面對xml_set_object()函數調用的那一行。

現在的問題是如何使用這個類實際生成具有多個內容來源的Web頁。

<?
include("class.RDFParser.php");
// how many items to display in each channel
$maxItems = 5;
?>
<html>
<head>
<basefont face="Verdana">
<body>

<table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr>
<!-- first cell -->
<td valign=top align=left>
<font size="-1">
<?
// get and parse freshmeat.net channel
$f = new RDFParser();
$f->setResource("http://www.freshmeat.net/backend/fm-releases.rdf");
$f->parseResource();
$f_channel = $f->getChannelInfo();
$f_items = $f->getItems();
// now format and print it...
?>
The latest from <a href=<? echo $f_channel["link"]; ?>><? echo
$f_channel["title"]; ?></a> <br> <ul> <? // iterate through items array
for ($x=0; $x<$maxItems; $x++) {
if (is_array($f_items[$x]))
{
// print data
$item = $f_items[$x];
echo "<li><a href=" . $item["link"] . ">" .
$item["title"] . "</a>";
}
}
?>
</ul>
</font>
</td>

<!-- second cell -->
<td align=center width=50%>
<i>Primary page content here</i>
</td>

<!-- third cell -->
<td valign=top align=left>
<font size="-1">
<?
// get and parse slashdot.org channel
$s = new RDFParser();
$s->setResource("http://slashdot.org/slashdot.rdf");
$s->parseResource();
$s_channel = $s->getChannelInfo();
$s_items = $s->getItems();
// now format and print it...
?>
The latest from <a href=<? echo $s_channel["link"]; ?>><? echo
$s_channel["title"]; ?></a> <br> <ul> <? // iterate through items array
for ($x=0; $x<$maxItems; $x++) {
if (is_array($s_items[$x]))
{
// print data
$item = $s_items[$x];
echo "<li><a href=" . $item["link"] . ">" .
$item["title"] . "</a>";
}
}
?>
</ul>
</font>
</td>

</tr>


</body>
</head>
</html>


這段代碼相當簡單。一旦你用“new”關鍵字生成一個類的實例,

$f = new RDFParser();

那么就可以用類方法來設置要分析的RDF文件的位置,

$f->setResource("http://www.freshmeat.net/backend/fm-releases.rdf");
$f->parseResource();
并且獲取$channel和$items數組,以用于后面的處理。



<?
$f_channel = $f->getChannelInfo();
$f_items = $f->getItems();
?>

The latest from <a href=<? echo $f_channel["link"]; ?>><? echo
$f_channel["title"]; ?></a> <br> <ul> <? // iterate through items array
for ($x=0; $x<$maxItems; $x++) {
if (is_array($f_items[$x]))
{
// print data
$item = $f_items[$x];
echo "<li><a href=" . $item["link"] . ">" .
$item["title"] . "</a>";
}
}
?>
</ul>


每次你重新裝入上面的腳本,相應的RDF文件就會被從特定的位置上取來,經過分析之后,按要求的格式顯示出來。

如果你站點具有高的訪問量,你就可能覺得我們的辛苦無意義之極,尤其是當所用的RDF數據更新地沒有那么快時,情況更糟。 在這種情況下,或許探究一下在本地緩存RDF數據才是較明智的做法:要么擴展上面的例子程序,在其中加入緩存功能;要么每閣幾個小時都花很長的時間下載一個最新RDF文件的本地副本到你的Web服務器上,然后使用這個本地副本,而不是那個“活”的(the “live” one)。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
欧美刺激午夜性久久久久久久| 精品一区二区在线播放| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 久久综合久久综合久久综合| 在线观看国产精品网站| 91久久线看在观草草青青| 91高清视频在线| 欧美卡1卡2卡| 国产亚洲综合在线| 最新国产成人在线观看| 一区二区免费在线播放| 日韩vs国产vs欧美| av电影一区二区| 97se亚洲国产综合自在线| 91麻豆国产自产在线观看| 欧美日韩一区二区三区在线视频| 99综合电影在线视频| 99久久免费视频.com| 精品亚洲免费视频| 亚洲一区二区三区国产| 精品一区二区精品| 91丝袜美腿高跟国产极品老师| 含羞草久久爱69一区| 亚洲女同女同女同女同女同69| 色菇凉天天综合网| 亚洲成色精品| caoporn国产一区二区| 麻豆成人av在线| 香蕉成人啪国产精品视频综合网| 精品伦理精品一区| 青青草一区二区三区| 欧美日韩另类综合| 制服.丝袜.亚洲.中文.综合| 17c精品麻豆一区二区免费| 国产一区在线看| 在线一区欧美| 欧美精彩视频一区二区三区| 久久69国产一区二区蜜臀| 国产精品mm| 91精品欧美一区二区三区综合在 | 国产成人高清视频| 在线精品亚洲一区二区| 欧美日韩免费观看一区三区| 国产精品久久久久久久久久久免费看 | 欧美一区视频| 久久综合色播五月| 激情五月婷婷综合| 在线观看91视频| 最新久久zyz资源站| 国产精品77777竹菊影视小说| 一级女性全黄久久生活片免费| 国产欧美一区二区三区在线看蜜臀| 欧美老肥妇做.爰bbww| 91精品国产综合久久精品麻豆| 欧美精品一区二区三区很污很色的| 久久精品一区四区| 久久久久久97三级| 欧美日本久久| 亚洲日本va午夜在线电影| 日本韩国欧美一区二区三区| 国产精品久久二区二区| 欧美777四色影| 欧美国产丝袜视频| 国产在线不卡| 亚洲成人在线免费| 亚洲国产美女| 午夜成人免费电影| 欧美日韩国产片| 91玉足脚交白嫩脚丫在线播放| 国产日韩欧美a| 亚洲免费精品| 日韩高清不卡一区二区三区| 欧美精品一级二级三级| av亚洲精华国产精华精| 亚洲丝袜自拍清纯另类| 在线区一区二视频| 韩国在线视频一区| 国产一区二区美女诱惑| 国产精品嫩草影院av蜜臀| 麻豆亚洲精品| 国产主播一区二区三区四区| 亚洲线精品一区二区三区八戒| 国产在线国偷精品免费看| 欧美三级电影在线观看| 日韩一区二区三区精品视频| 国产精品免费久久久久| 奇米一区二区三区av| 豆国产96在线|亚洲| 久久综合一区| 久久久青草婷婷精品综合日韩| 粉嫩av一区二区三区粉嫩| 久久久久国色av免费看影院| 亚洲清纯自拍| 国产成人精品免费一区二区| 色哟哟在线观看一区二区三区| 成人免费黄色大片| www成人在线观看| 一区二区三区精品国产| 精品一区二区三区免费观看 | 欧美在线高清| 洋洋成人永久网站入口| 99久久综合国产精品| 亚洲精品国产成人久久av盗摄| 欧美三级中文字幕在线观看| 91一区二区在线观看| 国产一区二区在线免费观看| 国产精品午夜久久| 欧美午夜精品免费| 国产日韩在线一区二区三区| 午夜欧美精品久久久久久久| 国产精品亚洲视频| 亚洲精品午夜久久久| 一区在线观看免费| 精品一区二区三区在线视频| 国产盗摄一区二区三区| 18成人在线观看| 久久成人国产| 久久精品综合网| 亚洲国产日韩欧美| 激情综合色播激情啊| 7777女厕盗摄久久久| 国产一区二区剧情av在线| 91福利在线导航| 91一区在线观看| 国产精品久久久久久久久久妞妞| 欧美日韩一区二区国产| 成人免费毛片嘿嘿连载视频| 美腿丝袜在线亚洲一区| 国产精品久线观看视频| 自拍偷拍国产亚洲| 久久久不卡网国产精品二区| 国产精品免费久久久久| 91精品国产全国免费观看| 久久蜜臀精品av| 婷婷综合久久一区二区三区| 五月婷婷激情综合网| 一区二区三区在线免费视频| 亚洲亚洲精品在线观看| 久久国产综合精品| 欧美一区亚洲二区| 国产精品永久| 欧美久久久一区| 国产日产欧美一区二区视频| 伊人久久成人| 国产精品一区二区三区四区| 国产99精品国产| 在线视频精品| 精品日本一线二线三线不卡| 亚洲人成亚洲人成在线观看图片| 日韩高清在线观看| 风流少妇一区二区| 久久久噜噜噜| 国产精品久久久久久久久免费丝袜| 亚洲手机成人高清视频| 欧美在线观看你懂的| 久久久久久久久久码影片| 国产乱淫av一区二区三区| 免费看欧美美女黄的网站| 日本中文一区二区三区| 亚洲成人免费在线观看| 五月综合激情网| 亚洲精品一区二区三区99| 日韩**一区毛片| 99视频一区| 国产日产亚洲精品系列| 国内精品伊人久久久久av影院| 在线不卡视频| 国产精品色哟哟网站| 麻豆精品视频在线观看视频| 欧美亚洲免费在线| 7777精品久久久大香线蕉| 久久久精品tv| 99精品一区二区三区| 免费国产一区二区| 麻豆视频观看网址久久| 午夜一区二区三区不卡视频| 日本一区二区综合亚洲| 99九九99九九九视频精品| 91.xcao| kk眼镜猥琐国模调教系列一区二区 | 欧美aaa在线| 色婷婷av一区| 国产成人精品网址| 久久综合久久99| 美腿丝袜在线亚洲一区| 国产欧美欧美| 丁香五精品蜜臀久久久久99网站| 国产精品久久一区二区三区| 1000部国产精品成人观看| 在线看片成人| 日本一不卡视频| 日韩欧美不卡在线观看视频| 亚洲欧美在线网| 中文字幕一区三区| 91精品国产综合久久久蜜臀图片| 亚洲妇熟xx妇色黄| 欧美日韩亚洲国产综合| 欧美日韩一区国产| 蜜桃久久久久久| 亚洲国产一区二区三区a毛片 |