网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > 用PHP&XML编制迷你搜索引擎(三)  

用PHP&XML编制迷你搜索引擎(三)

2006-02-27  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

四、在第三章程序的基础上可以显示一段子树。

同第二章的代码我就不再注释了。

下面的代码是我们的迷你搜索引擎的基础。

因为
要显示出一个字类别如程序设计->PHP->的信息就要用到他。

我们依照元素的层数和他在当层的第几号来对他进行定位





links
01

+----web 11
网管有家www.bitscn.net


+----sub 12

| +----web 21

| +----sub 22

网管联盟bitsCN_com



| | +----web 31

| | +----sub 32



: 网管网www.bitscn.com

:

:



__________________________________________________________

<html>

<body>



<?



// XML文件

$file = "demo.xml";







// 解析XML文件的函数

function xml_parse_from_file($parser, $file)

{

if(!file_exists($file))

{

die("Can’t find file "$file".");

}



if(!($fp = @fopen($file, "r")))

{

die("Can’t open file "$file"."); 网管有家bitscn.net

}



while($data = fread($fp, 4096))

{

if(!xml_parse($parser, $data, feof($fp)))

{

return(false);

}

}



fclose($fp);



return(true);

}







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){ //判断是否在子树的范围内 $hide==FALSE 为在

if($level==$lev&&$levelcount[$level]==$num)$hide=FALSE;

}else{

if($level<=$lev)$hide=TRUE;

}





if(!$hide){

echo "

";

for($i=1;$i<=($level-1-$lev);$i++)echo"|    ";

if($level-$lev>0)echo"+----";

中国网管论坛bbs.bitsCN.com





echo "<a href=$PHP_SELF?lev=$level&num=$levelcount[$level]>".

//加上每个元素节点的联接

trim($name)." </a>";



while ( list( $key, $val ) = each( $attrs ) ) {

echo "<font color=green>$key => $val</font>; ";

}

}





}



function stop_element($parser, $name)

{

global $level;



$level -= 1;

}



function data($parser, $data)

{

global $level,$hide;

if(!$hide)

if(trim($data)!=""){

echo trim($data);

}

}





//main start

global $hide,$lev,$num,$PHP_SELF;

$level = -1;

$hide = TRUE;



echo "<p><a href=$PHP_SELF>Root</a></p>"; 网管bitscn_com



if($lev==""){$lev=0;$num=1;}



$parser = xml_parser_create();



xml_set_element_handler($parser, "start_element", "stop_element");

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





?>

</body>

</html>
TAGs   搜索引擎   迷你   编制   "   parser   if   <   level   hide      
 上一篇:用PHP&XML编制迷你搜索引擎(四)   下一篇:用PHP&XML编制迷你搜索引擎(二)
用PHP&XML编制迷你搜索引擎(三) 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: