韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

PHP中的XML應(yīng)用(二)

PHP中的XML應(yīng)用(二)

更新時(shí)間:2022-10-10 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

如何對(duì)文檔進(jìn)行解析?
  在完成所有的準(zhǔn)備工作后,現(xiàn)在腳本終于可以解析XML文檔:

Xml_parse_from_file(),一個(gè)自定義的函數(shù),打開(kāi)參數(shù)中指定的文件,并以4kb的大小進(jìn)行解析
xml_parse(),和xml_parse_from_file()一樣,當(dāng)發(fā)生錯(cuò)誤時(shí),即XML文檔的格式不完全時(shí),將會(huì)返回false。

  我們可以使用xml_get_error_code()函數(shù)來(lái)得到最后一個(gè)錯(cuò)誤的數(shù)字代碼。將此數(shù)字代碼傳遞給xml_error_string()函數(shù)即可得到錯(cuò)誤的文本信息。輸出XML當(dāng)前的行數(shù),使得調(diào)試更容易。

  當(dāng)解析文檔時(shí),對(duì)于Expat需要強(qiáng)調(diào)問(wèn)題的是:如何保持文檔結(jié)構(gòu)的基本描述?

  如前所述,基于事件的解析器本身并不產(chǎn)生任何結(jié)構(gòu)信息。不過(guò)標(biāo)簽(tag)結(jié)構(gòu)是XML的重要特性。例如,元素序列<book><title>表示的意思不同于<figure><title>。書(shū)名和圖名是沒(méi)有關(guān)系的,雖然它們都用到"title"這個(gè)術(shù)語(yǔ)。因此,為了更有效地使用基于事件的解析器處理XML,必須使用自己的棧(stacks)或列表(lists)來(lái)維護(hù)文檔的結(jié)構(gòu)信息。

  為了產(chǎn)生文檔結(jié)構(gòu)的鏡像,腳本至少需要知道目前元素的父元素。用Exapt的API是無(wú)法實(shí)現(xiàn)的,它只報(bào)告目前元素的事件,而沒(méi)有任何前后關(guān)系的信息。因此,需要建立自己的棧結(jié)構(gòu)。

  腳本范例使用先進(jìn)后出(FILO)的棧結(jié)構(gòu)。通過(guò)一個(gè)數(shù)組,棧將保存全部的開(kāi)始元素。對(duì)于開(kāi)始元素處理函數(shù),目前的元素將被array_push()函數(shù)推到棧的頂部。相應(yīng)的,結(jié)束元素處理函數(shù)通過(guò)array_pop()將最頂?shù)脑匾谱摺?

  對(duì)于序列<book><title></title></book>,棧的填充如下:

開(kāi)始元素book:將"book"賦給棧的第一個(gè)元素($stack[0])。
開(kāi)始元素title:將"title"賦給棧的頂部($stack[1])。
結(jié)束元素title:從棧中將最頂部的元素移去($stack[1])。
結(jié)束元素title:從棧中將最頂部的元素移去($stack[0])。

  PHP3.0通過(guò)一個(gè)$depth變量手動(dòng)控制元素的嵌套來(lái)實(shí)現(xiàn)范例,這就使腳本看起來(lái)比較復(fù)雜。PHP4.0通過(guò)array_pop()和array_push()兩個(gè)函數(shù)來(lái)使腳本看起來(lái)更簡(jiǎn)潔。

如何收集XML文檔中的元素信息?

  為了收集每個(gè)元素的信息,腳本需要記住每個(gè)元素的事件。通過(guò)使用一個(gè)全局的數(shù)組變量$elements來(lái)保存文檔中所有不同的元素。數(shù)組的項(xiàng)目是元素類(lèi)的實(shí)例,有4個(gè)屬性(類(lèi)的變量)

$count -該元素在文檔中被發(fā)現(xiàn)的次數(shù)
$chars -元素中字符事件的字節(jié)數(shù)
$parents -父元素
$childs - 子元素

  注意:PHP的一個(gè)特性是你可以通過(guò)while(list() = each())loop遍歷整個(gè)類(lèi)結(jié)構(gòu),如同你遍歷整個(gè)相應(yīng)的數(shù)組一樣。所有的類(lèi)變量(當(dāng)你用PHP3.0時(shí)還有方法名)都以字符串的方式輸出。

  當(dāng)發(fā)現(xiàn)一個(gè)元素時(shí),我們需要增加其相應(yīng)的記數(shù)器來(lái)跟蹤它在文檔中出現(xiàn)多少次。在相應(yīng)的$elements項(xiàng)中的記數(shù)元素也要加一。

  我們同樣要讓父元素知道目前的元素是它的子元素。因此,目前元素的名稱(chēng)將會(huì)加入到父元素的$childs數(shù)組的項(xiàng)目中。最后,目前元素應(yīng)該記住誰(shuí)是它的父元素。所以,父元素被加入到目前元素$parents數(shù)組的項(xiàng)目中。

顯示統(tǒng)計(jì)信息
  剩下的代碼在$elements數(shù)組和其子數(shù)組中循環(huán)顯示其統(tǒng)計(jì)結(jié)果。這就是最簡(jiǎn)單的嵌套循環(huán),盡管輸出正確的結(jié)果,但代碼既不簡(jiǎn)潔又沒(méi)有任何特別的技巧,它僅僅是一個(gè)你可能每天用他來(lái)完成工作的循環(huán)。

  腳本范例被設(shè)計(jì)為通過(guò)PHP的CGI方式的命令行來(lái)調(diào)用。因此,統(tǒng)計(jì)結(jié)果輸出的格式為文本格式。如果你要將腳本運(yùn)用到互聯(lián)網(wǎng)上,那么你需要修改輸出函數(shù)來(lái)產(chǎn)生HTML格式。

如何用PHP&XML編制一個(gè)迷你搜索引擎實(shí)例?
  讓我們首先來(lái)熟悉一下我們程序中用到的那個(gè)XML(保存為xyz.xml)。

<?xml version="1.0" encoding="gb2312" ?>
<links>采用PHP和XML技術(shù)構(gòu)建的搜索引擎
<web memo="memo1" url="">name1</web>
<sub>電腦網(wǎng)絡(luò)
<web memo="nemo2">name2</web>
<sub>程序設(shè)計(jì)
<web memo="memo3">name3</web>
<sub>PHP
<web url="http://www.phpbuilder.com/" memo="[英文]PHP開(kāi)發(fā)資源。">
www.phpbuilder.com</web>
<web url="http://www.fokus.gmd.de" memo="[英文]PHP開(kāi)發(fā)手冊(cè)。 ">
PHP Manual</web>
</sub>
</sub>
</sub>
</links>

它的結(jié)構(gòu)相當(dāng)簡(jiǎn)單,根元素就是links,sub代表著一個(gè)類(lèi)別,web就是一個(gè)網(wǎng)站的信息,其中包含著屬性,url代表網(wǎng)站的聯(lián)接,memo為備注信息,<web>??</web> 、<sub>??</sub>中包含的為元素的數(shù)據(jù)在這里就是類(lèi)別和網(wǎng)站的名稱(chēng),這是符合上面的規(guī)定的。

現(xiàn)在我們來(lái)回答上面提出的問(wèn)題:為什么要用XML來(lái)編制搜索引擎?
第一個(gè)原因就是有時(shí)候由于各種原因我們可能不能用到數(shù)據(jù)庫(kù)(MySQL或者其他);
其次,對(duì)于小數(shù)據(jù)量的搜索引擎來(lái)說(shuō),它的數(shù)據(jù)量很小,如果用數(shù)據(jù)庫(kù)來(lái)做,效率未必有多高;

最重要的一點(diǎn)是,這個(gè)搜索引擎維護(hù)起來(lái)相當(dāng)?shù)暮?jiǎn)單,并且不用編寫(xiě)繁瑣的數(shù)據(jù)庫(kù)的維護(hù)的程序。例如,我們要添加一個(gè)類(lèi)別或者網(wǎng)頁(yè),只要編輯文本的文件,加上一福紈eb>???</web>或是<sub>????</sub>就可以了,而且,如果想把一個(gè)類(lèi)別移動(dòng)到另一個(gè)地方的話,我們只要將這一部分的sub復(fù)制過(guò)去就行了。

下面一個(gè)最簡(jiǎn)單的用PHP顯示XML的范例。

下面的程序是將解析XML并按照樹(shù)形結(jié)構(gòu)輸出至瀏覽器,并顯示每層的元素總數(shù)。

<?php
$file = "demo.xml";// XML文件
function xml_parse_from_file($parser, $file) {// 解析XML文件的函數(shù) }
function start_element($parser, $name, $attrs) {//遇到了開(kāi)元素標(biāo)記如<a href="link">就執(zhí)行這一段}
function stop_element($parser, $name) {//遇到了開(kāi)元素標(biāo)記如</body>就執(zhí)行這一段}
function data($parser, $data) {……}
function showcount(){ //顯示每一層的元素總數(shù)}

global $level,$levelcount,$maxlevel;
$level = -1;
$parser = xml_parser_create();// 產(chǎn)生解析器的實(shí)例
xml_set_element_handler($parser, "start_element", "stop_element"); // 設(shè)置處理函數(shù)
xml_set_character_data_handler($parser, "data");
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
$ret = xml_parse_from_file($parser, $file); // 解析文件
if(!$ret) {
die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
}
xml_parser_free($parser); // 釋放解析器
showcount();
?>

在上面的程序的基礎(chǔ)上,可以顯示一段子樹(shù),我們依照元素的層數(shù)和他在該層的第幾號(hào)來(lái)對(duì)他進(jìn)行定位

例如:

links (0,1)
+----web (1,1)
+----sub (1,2)
| +----web (2,1)
| +----sub (2,2)
| | +----web (3,1)
| | +----sub (3,2)
:
:
:
下面的代碼是我們的搜索引擎的基礎(chǔ)。因?yàn)椋@示出一個(gè)子類(lèi)別(如程序設(shè)計(jì)->PHP->)的信息就要用到他。

<?php
……
function start_element($parser, $name, $attrs) {
global $level,$levelcount,$maxlevel,$hide,$lev,$num,$PHP_SELF;
$level += 1;
if($level>$maxlevel)
$maxlevel=$level;
$levelcount[$level]+=1;

if($hide){ //判斷是否在子樹(shù)的范圍內(nèi),$hide==FALSE 為在
if($level==$lev&&$levelcount[$level]==$num)
$hide=FALSE;
}else{
if($level<=$lev)$hide=TRUE;
}

if(!$hide){
……//輸出
}
}
function data($parser, $data) {
global $level,$hide;
if(!$hide){
if(trim($data)!=""){ echo trim($data); }
}
}
……
global $hide,$lev,$num,$PHP_SELF;
$level = -1;
$hide = TRUE;
echo "<p><a href=$PHP_SELF>Root</a></p>";
if($lev==""){
$lev=0;$num=1;
}
……
?>

mini的搜索引擎到底如何做呢?

作了若干的鋪墊,下面我們就來(lái)看一下我們的搜索引擎的主要文件。

第一段為仿sina,yahoo的按照類(lèi)別查詢
第二段為搜索查詢部分(把整個(gè)樹(shù)遍歷一遍)顯示符合的內(nèi)容。

xml3.php

關(guān)鍵字匹配采用eregi函數(shù),我們假設(shè)輸入的文字都是不會(huì)導(dǎo)致錯(cuò)誤的。

<全文完>

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
亚洲午夜黄色| 三区四区电影在线观看| 欧美大片1688| 一区视频在线看| 成人av.网址在线网站| 国产www视频在线观看| 999sesese| 国产综合在线播放| 久久久久中文字幕2018| 黄视频在线观看网站| 国产狼人综合免费视频| 国产精品久久影院| 色欧美片视频在线观看| 日本婷婷久久久久久久久一区二区| 欧美成人家庭影院| 日韩三级视频在线| 在线观看免费p片视频网站地址| 亚洲欧美久久久久一区二区三区| 中文字幕永久免费| 国产99久一区二区三区a片| 国产一区二区视频在线免费观看| 麻豆三级在线观看| 在线观看国产成人av片| 国产精品狠色婷| 91麻豆免费看| 韩国福利视频一区| 久久久久久久久久久成人| 国产精品va无码一区二区| 天堂99x99es久久精品免费| 99re视频这里只有精品| 免费看黄色三级| 好看的中文字幕在线播放| 亚洲人成在线播放网站岛国| 亚洲国产精品高清久久久| 亚洲一二三四区不卡| 日本成人一区二区三区| 欧美午夜精品久久久久久孕妇| 激情综合网五月天| 亚洲精选av| 亚洲精品视频大全| 欧美日韩国产一级片| 国产娇喘精品一区二区三区图片| 欧美日韩精品高清| 国产精品va无码一区二区三区| 日本综合精品一区| 里番精品3d一二三区| 亚洲一一在线| 日韩无码精品一区二区三区| 麻豆精品一区二区综合av| 青青草视频播放| 下面一进一出好爽视频| 国产高清日韩| 中文字幕久久午夜不卡| 91麻豆精品久久毛片一级| 91美女视频网站| 中文字幕一区二区三区四区五区人| 国产精品成人久久久久| 外国成人激情视频| 国产乱人伦精品一区二区在线观看| 不卡在线视频中文字幕| 九九综合在线| 全亚洲第一av番号网站| 国产成人精品实拍在线| 国产综合色在线视频区| 亚洲国产乱码最新视频| 免费黄频在线观看| 午夜精品久久久久久久99水蜜桃| 中国一级大黄大黄大色毛片| h网站在线播放| 亚洲欧洲av色图| 成年人视频网站在线| 黄色三及免费看| 可以免费观看av的网站| 亚洲乱码中文字幕| 农村老熟妇乱子伦视频| 日批免费在线观看| 最新国产热播激情视频| 男人网站视频| 国产一区二区不卡| 91看片就是不一样| 国产精品186在线观看在线播放| 少妇一级淫免费观看| 黄页在线观看免费| 日本精品一区二区三区在线播放视频| 国产丝袜美女| 成人av在线看| 日韩av网址在线观看| 亚州av一区二区| 日本在线观看天堂男亚洲| 97国产精东麻豆人妻电影| 久久久久.com| 久久精品中文| 欧美日一区二区在线观看| 久久久精品国产sm调教网站| 亚洲另类第一页| 疯狂欧洲av久久成人av电影| 欧美专区福利免费| 乳奴隷乳フ辱julia在线观看| 国产精品手机播放| 成人av午夜影院| 黄色在线论坛| 一区不卡在线观看| 成人在线高清| 在线码字幕一区| 一道本在线视频| 91网在线看| 色婷婷精品大在线视频| 欧美日韩影院| 中文文字幕一区二区三三| 欧美日韩导航| 免费不卡av在线| 日本在线观看视频| 亚洲欧美日韩一区| 日韩一区二区在线看| 一本到在线视频| 亚洲欧洲精品一区二区三区波多野1战4| 国产中文字幕亚洲| 欧美巨大xxxx做受沙滩| 国产亚洲电影| www.日本不卡| 日韩一级片在线播放| 欧美激情成人| 成年人在线视频免费观看| 日韩精品视频免费专区在线播放| 欧美一级在线观看| 免费成人美女女| 老头老太做爰xxx视频| 欧美精品日韩| 亚洲18在线| 中文字幕22页| 国产亚洲高清在线观看| 麻豆国产传媒av福利| 播放一区二区| 久久午夜福利电影| 黄色一级在线视频| 天天看片天天操| 欧美在线免费看| 亚洲激情女人| 国产精品久久乐| 国产三级精品在线不卡| 久久精品这里只有精品| 欧美久久久久久久久| 无码久久精品国产亚洲av影片| 日韩久久久久久久久久久久| 日本在线视频1区| 小视频福利在线| 日本24小时在线高清视频| 午夜视频一区在线观看| 九九精品在线| 久草免费在线视频| 最新中文字幕在线观看视频| 欧美性猛交xxxx免费看漫画| 免费av在线电影| 久久精品国产亚洲7777| 四虎影院在线域名免费观看| 中文字幕你懂得| a毛片不卡免费看片| 国产亚洲一二三区| 免费在线观看一级片| 538国产精品一区二区免费视频| 三上悠亚av一区二区三区| 九一国产在线观看| 99视频在线免费观看| 中文一区一区三区高中清不卡免费| 亚洲免费av一区二区| 精品视频在线看| 国产一级在线观看视频| 欧洲大片精品免费永久看nba| 欧美在线www| 国产夫妻性爱视频| 国产精品久久久久蜜臀| 亚洲黄色片在线观看| 黄色三级视频在线观看| 国产又爽又黄的视频| 在线观看天堂| 中文字幕伦av一区二区邻居| 中文字幕日产av一二三区| 超碰caoprom| 国产三级国产精品国产国在线观看| 久久精品无码一区二区日韩av| 国产人妖伪娘一区91| 亚洲福利天堂| 亚洲精品女人久久久| 九九热视频这里只有精品| 91久久夜色精品国产按摩| 欧美日韩一道本| 国产国产精品人在线视| 日本乱子伦xxxx| 韩国一区二区三区视频| 亚洲黄色一级大片| 久久久电影免费观看完整版| 久久一二三四区| 中文字幕一区二区在线观看视频| 午夜精品免费视频| 日韩精品视频免费专区在线播放| 精品福利在线观看| 小明成人免费视频一区| 亚洲国产三级网| 色先锋最新资源| 三级在线视频| 国产精品wwwww| 免费不卡av网站| 怡红院av久久久久久久| 99久久er热在这里只有精品15| 国产xxxxx视频| 国产伦一区二区三区色一情| 欧美精品一区二区三区很污很色的| 国产又粗又猛视频免费| 99免费在线观看| 卡通动漫精品一区二区三区| 欧美精品自拍偷拍动漫精品| 亚洲一区二三| 福利av痴女| 91蝌蚪精品视频| 91在线观看一区二区| 久久综合九色综合97婷婷| 国产乱一区二区| 中国美女乱淫免费看视频| 伊人影院蕉久影院在线播放| 操女生的网站| 欧美性猛交xxxxbbb| 国内老熟妇对白xxxxhd| 亚洲国产综合在线观看| 日本aⅴ在线观看| 精品国产va久久久久久久| 亚洲黄色片视频| 91在线观看下载| 国产欧美久久久精品影院| 欧美性猛交xxxx乱大交丰满| 日韩激情免费| 国产欧美精品va在线观看| 天天摸天天做天天爽水多| 欧美在线短视频| free欧美性| 精品免费久久久久久久| 8x国产一区二区三区精品推荐| 欧美xxxx做受欧美护士| 久久久久麻豆v国产精华液好用吗| av女同在线| 噜噜噜久久,亚洲精品国产品| 国产一区二区精品福利地址| 成人午夜免费剧场| 国产精品一区二区不卡| 中文在线免费二区三区| 亚洲小说区图片| 国产精品99久久久久久白浆小说| 三级在线免费观看| 欧美成人免费全部观看天天性色| 麻豆国产欧美一区二区三区| 波多野结衣视频一区二区| 91国模少妇一区二区三区| 欧美夫妻性生活| www.狠狠爱| 亚洲欧美综合在线精品| 99精品一区二区三区| 亚洲永久精品ww.7491进入| 国产欧美精品在线观看| 色帝国亚洲欧美在线| 福利网在线观看| 国产午夜精品视频一区二区三区| 香蕉自在线视频| 亚洲欧洲高清在线| 新版中文字幕在线资源| 日韩欧美xxxx| 91香蕉国产视频| 欧美福利专区| 色999日韩欧美国产| 日本亚洲一区二区三区| 亚洲AV无码精品色毛片浪潮| 99精品视频免费看| 波多野结衣中文字幕在线播放| 一级二级在线观看| 亚洲理论电影网| 国产精品亚洲欧美在线播放| 国产一区二区三区在线看麻豆| 免费观看成人www动漫视频| 亚洲国产欧美一区二区三区丁香婷| 亚洲综合一区二区三区| 亚洲欧美综合久久久久久v动漫| 男女啊啊啊视频| 欧美黄片一区二区三区| 日本午夜激情视频| 福利二区91精品bt7086| 日本三级欧美三级| 日韩中文在线| 久久久久久国产免费a片| 夜色激情一区二区| 视频三区二区一区| 国产精品2024| 青青草av专区| 中文字幕精品一区| 欧美一区影院| 成年男女免费视频网站不卡| 久久国产麻豆精品| 日本精品一区二区三区在线观看视频| 亚洲日韩中文字幕一区| 日韩午夜精品视频| julia中文字幕一区二区99在线| 警花观音坐莲激情销魂小说| 亚洲精品美女在线观看| 日本不卡一二三区黄网| 久久伊人91精品综合网站| 欧美影院天天5g天天爽| 亚洲欧美日本一区二区| 欧美aa在线观看| 无码人妻精品一区二区50| 电影亚洲精品噜噜在线观看| 九九热在线免费观看| 欧美黄色免费视频| 亚洲mv大片欧洲mv大片精品| 婷婷在线免费观看| 欧美18一12sex性处hd| 亚洲美女中文字幕| 欧美日韩福利电影| 日本年轻的继坶中文字幕| 国产玖玖精品视频| 亚洲综合日韩中文字幕v在线| 17videosex性欧美| 一级黄色片毛片| 亚洲乱亚洲高清| 日产电影一区二区三区| 丁香花在线观看完整版电影| 亚洲一区亚洲| 成人偷拍自拍| 日本少妇色视频| 亚洲综合色成人| 日韩欧美另类中文字幕| 羞羞色午夜精品一区二区三区|