PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP中高级 » 用PHP&XML编制迷你搜索引擎(三)
本页主题: 用PHP&XML编制迷你搜索引擎(三) 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

meiwang12363

该用户目前不在线
级别: 中级程序员
精华: 1
发帖: 1069
威望: 0 点
金钱: 0 PYMB
贡献值: 0 点
在线时间:8(小时)
注册时间:2007-04-26
最后登录:2007-09-04

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



四、在第三章程序的基础上可以显示一段子树。
同第二章的[url=javascript:;]代码[/url]我就不再注释了。
下面的代码是我们的迷你搜索引擎的基础。
因为
要显示出一个字类别如程序设计->PHP->的信息就要用到他。
我们依照元素的层数和他在当层的第几号来对他进行定位

links
01
+----web 11
+----sub 12
| +----web 21
| +----sub 22
| | +----web 31
| | +----sub 32
:
:
:
__________________________________________________________
[/color][color=#0000cc]html>
[/color][color=#0000cc]body>
// [url=javascript:;]XML[/url]文件
$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($level0)echo"+----";
echo "".
//加上每个元素节点的联接
trim($name)." ";
while ( list( $key, $val ) = each( $attrs ) ) {
echo "$key => $val; ";
}
}
}
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 "
Root";
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);
?>
[/color][color=#006600]/body>
[/color][color=#006600]/html>
顶端 Posted: 2007-08-17 09:46 | [楼 主]
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP中高级

时:11-23 05:10 Copyright © 2006 phpwhy.com 权
ICP05060669

曳息 -