亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

如何用PHP把RDF內(nèi)容插入Web站點(diǎn)之中(四)

2019-09-08 23:11:37
字體:
供稿:網(wǎng)友

返回到類(Back To Class)

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

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

類代碼如下:

<?
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)
 {
/t   $this->file = $file;
 }

 
 // parse the RDF file set with setResource()
 // this populates the $channel and $items arrays
 function parseResource()
 {
/t   // create parser
/t   $this->xp = xml_parser_create();
/t  
/t   // set object reference
/t   xml_set_object($this->xp, $this);
/t  
/t   // set handlers and parser options
/t   xml_set_element_handler($this->xp, "elementBegin",
"elementEnd");
/t   xml_set_character_data_handler($this->xp,
"characterData");
/t   xml_parser_set_option($this->xp,
XML_OPTION_CASE_FOLDING, TRUE);
/t   xml_parser_set_option($this->xp, XML_OPTION_SKIP_WHITE,
TRUE);
/t  
/t   // read XML file
/t   if (!($fp = fopen($this->file, "r")))
/t   {
/t/t die("Could not read $this->file");
/t   }
/t  
/t   // parse data
/t   while ($xml = fread($fp, 4096))
/t   {
/t       if (!xml_parse($this->xp, $xml, feof($fp)))
/t       {
/t/t/t    die("XML parser error: " .
xml_error_string(xml_get_error_code($this->xp)));
/t       }
/t   }
/t  
/t   // destroy parser
/t   xml_parser_free($this->xp);
 }

 // opening tag handler
 function elementBegin($parser, $name, $attributes)
 {
/t   $this->currentTag = $name;
/t   // set flag if entering <channel> or <item> block
/t   if ($name == "ITEM")
/t   {
/t/t   $this->flag = 1;
/t   }
/t   else if ($name == "CHANNEL")
/t   {
/t/t   $this->flag = 2;
/t   }
 }
 
 // closing tag handler      
 function elementEnd($parser, $name)
 {
/t   $this->currentTag = "";
 
/t   // set flag if exiting <channel> or <item> block
/t   if ($name == "ITEM")
/t   {
/t/t   $this->count++;
/t/t   $this->flag = 0;
/t   }
/t   else if ($name == "CHANNEL")
/t   {
/t/t   $this->flag = 0;
/t   }
 }
 
 // character data handler
 function characterData($parser, $data)
 {
/t   $data = trim(htmlspecialchars($data));
/t   if ($this->currentTag == "TITLE" || $this->currentTag ==
"LINK" || $this->currentTag == "DESCRIPTION")
/t   {
/t/t   // add data to $channels[] or $items[] array
/t/t   if ($this->flag == 1)
/t/t   {
 
$this->items[$this->count][strtolower($this->currentTag)] .= $data;
/t/t   }
/t/t   else if ($this->flag == 2)
/t/t   {
 
$this->channel[strtolower($this->currentTag)] .= $data;
/t/t   }
/t   }
 }        

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

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

}
?>

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

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

現(xiàn)在的問題是如何使用這個類實際生成具有多個內(nèi)容來源的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]))
 {
/t   // print data
/t   $item = $f_items[$x];
/t   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]))
 {
/t   // print data
/t   $item = $s_items[$x];
/t   echo "<li><a href=" . $item["link"] . ">" .
$item["title"] . "</a>";
 }
}
?>
</ul>
</font>
</td>

</tr>
</table>

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

這段代碼相當(dāng)簡單。一旦你用“new”關(guān)鍵字生成一個類的實例,

$f = new RDFParser();

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

$f->setResource("http://www.freshmeat.net/backend/fm-releases.rdf");
$f->parseResource();

并且獲取$channel和$items數(shù)組,以用于后面的處理。

<?
$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]))
 {
/t   // print data
/t   $item = $f_items[$x];
/t   echo "<li><a href=" . $item["link"] . ">" .
$item["title"] . "</a>";
 }
}
?>
</ul>

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产精品久久久| а√天堂8资源中文在线| 天天综合91| 少妇激情一区二区三区视频| 国产免费不卡视频| 日本最新高清不卡中文字幕| 欧美综合欧美视频| 国产精品久久久毛片| 日韩综合一区二区三区| 国产美女在线观看一区| 久久久精品中文字幕麻豆发布| 四虎永久在线精品免费一区二区| 26uuu国产电影一区二区| 欧美黄色aaaa| 久久99精品波多结衣一区| 九色综合国产一区二区三区| 欧美另类高清videos的特点| 国产一级黄色片免费| 91超薄丝袜肉丝一区二区| 3751色影院一区二区三区| 一本一道久久a久久综合蜜桃| 天堂av在线免费观看| 日韩欧美一区二区三区不卡视频| 欧美极品aⅴ影院| 亚洲欧洲免费| 在线成人午夜影院| 在线影视一区二区三区| 999精品视频在线观看播放| 男女羞羞在线观看| 我要看一级黄色大片| 一区 二区 三区| 国产精品免费看一区二区三区| 欧美性猛交p30| 一级欧洲+日本+国产| 日本一区二区三区四区| 国产精品视频中文字幕91| 欧美日韩高清一区二区三区| 亚洲性av网站| 香蕉视频在线网址| 岛国av免费在线| 国产乱人乱偷精品视频a人人澡| 欧美亚洲国产精品| 精品久久久久久久久久岛国gif| 国产女优一区| 裸体女人亚洲精品一区| 91精品国产福利| 依依综合在线| 成人h动漫精品一区二区下载| 黄色在线论坛| 久久精品夜色噜噜亚洲aⅴ| 中文人妻av久久人妻18| 日韩国产一级片| 日韩福利小视频| 久久婷婷五月综合色丁香| 欧美中日韩免费视频| 国产精品国产对白熟妇| 亚洲第一福利视频在线| 久久久亚洲综合网站| 91久久国产婷婷一区二区| 精品视频偷偷看在线观看| 午夜天堂影视香蕉久久| 久久精品国内一区二区三区水蜜桃| 久久riav二区三区| 日本激情视频在线播放| 很黄很污的网站| 国产美女极度色诱视频www| 国产三级视频网站| 国产精品va无码一区二区三区| 洋洋av久久久久久久一区| 欧美大片1688网站| 91理论电影在线观看| 天天做日日爱夜夜爽| 亚洲在线视频一区| 欧美日韩综合高清一区二区| 国产精品私房写真福利视频| 一区二区三区四区视频精品免费| 日韩欧美亚洲v片| 好吊视频一二三区| 国产精品99精品久久免费| 欧美整片在线观看| 蜜桃传媒麻豆第一区在线观看| 欧美三片在线视频观看| 亚洲欧美国产高清va在线播放| 国产极品久久久久久久久波多结野| 亚洲人成电影在在线观看网色| 欧美久久婷婷综合色| 精品成人免费一区二区在线播放| 欧美一区二区三区电影在线观看| 日本少妇高潮喷水视频| 精品国产精品| 欧美二区乱c少妇| 亚洲图中文字幕| 色综合久久精品| 欧美日韩一区二区三区视频播放| 一个人看的www在线免费观看| 欧美日韩爱爱视频| 中文字幕亚洲欧洲| a级黄色片免费| 免费av播放| 亚洲人成影院在线| 国产精品一区二区三区99| 性欧美高清强烈性视频| 久久99精品久久只有精品| av天在线观看| 欧美激情一区二区三区| 精品资源在线看| 国产最顶级的黄色片在线免费观看| 欧美成人三级视频| 精品无码国产一区二区三区51安| 国产精品第九页| 日本中文不卡| 探花国产精品一区二区| 69视频在线播放| 精品日韩成人av| 50路60路老熟妇啪啪| 免费成人三级| 97se亚洲综合在线| 欧美日本国产视频| 香蕉久久夜色精品国产更新时间| 在线三级av| 一区二区激情小说| 懂色av一区二区三区免费看| 亚洲二区在线观看| 一起操在线视频| 国产美女做爰免费视频软件| 久久精品久久精品亚洲人| 51vv免费精品视频一区二区| 牛牛精品在线视频| 欧美激情网站在线观看| 日本一级黄视频| 波多野结衣久草一区| 国产嫩草影院久久久久| 成人在线免费观看一区| 色影视在线视频资源站| 欧美调教网站| 色老汉av一区二区三区| 天堂√在线观看一区二区| 成人黄色在线观看视频| 欧美日韩一视频区二区| 日韩精品极品在线观看| 国产福利电影在线| а中文在线天堂| 97人人模人人爽人人澡| 99精品视频一区| 亚洲国产精品久久久久| 综合激情婷婷| 欧美激情综合| 久热99视频在线观看| 日韩精品久久久久久免费| 亚洲精品一区二区网址| 日韩成人伦理电影在线观看| 97精品资源在线观看| 男人的天堂av网| 国产精品网址在线| 欧美极品少妇xxxxⅹ裸体艺术| 精品福利在线导航| 4hu最新网址| 日本电影欧美片| 中文字幕日韩综合| 在线观看免费高清视频97| 激情综合色丁香一区二区| а天堂中文在线官网| 四虎成人免费电影| 国产午夜三区视频在线| 国产欧美日韩一区二区三区四区| 成人激情视频小说免费下载| 深夜成人在线| 一道在线中文一区二区三区| 亚洲综合色婷婷| 欧美性xxxx交| 极品美女一区二区三区视频| 欧美午夜大胆人体| 一本色道综合亚洲| 国产中文字幕在线| 国产精品户外野外| 91亚洲一区精品| 欧美性色欧美a在线播放| 国产欧美日韩第一页| 成人a v视频| 性疯狂做受xxxx高清视频| 欧美男男gaytwinkfreevideos| 日韩精品一区二区三区外面| 久久全国免费久久青青小草| 午夜精品美女自拍福到在线| 亚洲人妻一区二区三区| 精品国产乱码久久久久久免费| 中文字幕佐山爱一区二区免费| 热色播在线视频| 欧美精品一区二区三区久久| 亚洲欧美另类小说视频| 黄页网站免费在线观看| 欧美日韩亚洲网| 天天天干夜夜夜操| 国产一线二线三线在线观看| 国产一级特黄a大片99| 欧美日韩精品一区二区在线播放| 国产精品剧情一区二区在线观看| 在线观看免费国产小视频| 日韩国产亚洲欧美| 超碰在线网址| 欧美精品一区二| 国产一级片久久| 在线免费看av网站| 成年免费在线观看| 日韩欧美电影在线观看| 国产日产亚洲精品| 疯狂做受xxxⅹ高潮视频免费| 欧美做受xxxxxⅹ性视频| 美女一区2区| 欧美午夜精品一区二区三区电影| 国产中文字幕精品| 性娇小13――14欧美| 永久免费看av| wwwwww色| 综合欧美国产视频二区| 成人在线视频成人| 欧美亚洲禁片免费| 日韩精品一二三四区| 一二区在线观看| 日韩精品一区二区三区在线| 久久99精品一区二区三区| 美女视频黄久久| 精品国产乱码久久久久久免费| 在线综合色站| 网站永久看片免费| 日韩精品第1页| 日韩精品一级二级| asian性开放少妇pics| 粉嫩绯色av一区二区在线观看| ririsao中文字幕免费| 亚洲日本成人| 国产日韩av高清| 欧美日韩综合高清一区二区| eeuss影院在线观看第一页| 欧美成人sm免费视频| 午夜精品久久久久久久99老熟妇| 日韩黄色免费观看| 亚洲乱码一区二区三区在线观看| 成人免费视频观看视频| 国产精品亚洲自拍| 欧美日韩精品是欧美日韩精品| 91中文字幕永久在线| heyzo亚洲| 欧美俄罗斯性视频| 欧美亚洲另类久久综合| 亚洲国产欧美在线人成| 精品动漫3d一区二区三区免费版| 久久久国产成人精品| 久久综合色鬼综合色| 亚洲天堂手机版| 亚洲精品久久久久久久久久久| 超碰在线图片| 成人情趣片在线观看免费| 91 视频免费观看| 亚洲中文字幕无码中文字| 久久久久无码国产精品一区| 欧美精品一级| 亚洲理伦在线| 波多野结衣免费观看| 国产高潮呻吟久久| 亚洲一级电影视频| 久久精品视频网| 日韩高清国产一区在线| 中文亚洲欧美| 欧美日韩喷水| 欧美激情国内自拍| 亚洲欧洲高清在线| 精品一区二区三区不卡| 欧美性猛交xxxx乱| 免费一级欧美片在线观看| 成人黄色av网站| 欧美成人精品欧美一级乱黄| 日本一区二区在线免费观看| 亚洲午夜激情网页| 国产一区欧美一区| 一本—道久久a久久精品蜜桃| 久久久久久久人妻无码中文字幕爆| 日本不卡一区二区三区在线观看| 成人网在线视频| 99爱在线视频| 天堂久久av| 69精品无码成人久久久久久| 亚洲国产精品久久久久婷婷884| 九义人在线观看完整免费版电视剧| 九九热免费在线| avove在线观看| 日韩视频第二页| 色偷偷免费视频| 欧美精品aⅴ在线视频| 亚洲AV无码一区二区三区性| 娇小11一12╳yⅹ╳毛片| 久久久精品福利| 亚洲一区二区免费视频软件合集| 欧美一区二区视频观看视频| 久久大香伊蕉在人线观看热2| 亚洲二区在线观看| 91国产高清在线| 男女做爰猛烈刺激| 国产亚洲激情| 日韩电影在线观看网站| 欧美私人情侣网站| 和岳每晚弄的高潮嗷嗷叫视频| 伊人av在线播放| 久久影视电视剧免费网站| 日韩激情片免费| 欧美日韩国产欧| 先锋成人av| 精品美女一区二区三区| 亚洲啊啊啊啊啊| 成人在线免费视频| 91在线观看污| 免费人成黄页在线观看忧物| 国产女呦网站| 亚洲色图欧美激情| 成人福利在线| 人妖欧美一区二区| 99久久久无码国产精品免费| 亚洲精品在线观看www| 日本最新一区二区三区视频观看| 午夜理伦三级做爰电影| 欧美三级在线看| 欧美日韩国产页| 久久99精品久久久久久青青91| 国产精品成人69xxx免费视频| fc2成人免费人成在线观看播放| 国产91精品一区二区绿帽| 五月精品视频| 国产欧美一区二区三区在线看|