文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用PHP&XML编制迷你搜索引擎(三)

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

时间:2007-02-17  来源:PHP爱好者

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

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

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

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

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

如:

links (0,1)

+----web (1,1)

+----sub (1,2)

| +----web (2,1)

| +----sub (2,2)

| | +----web (3,1)

| | +----sub (3,2)

:

:

:

__________________________________________________________

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

}

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"+----";

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

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>
php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载