用PHP&XML编制迷你搜索引擎(三)
2004-10-07 19:49
483 查看
用PHP&XML编制迷你搜索引擎(三)
四、在第三章程序的基础上,可以显示一段子树。 同第二章的代码我就不再注释了。 下面的代码是我们的迷你搜索引擎的基础。 因为,要显示出一个字类别(如程序设计->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 "<br>"; 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&XML编制迷你搜索引擎(一)
- 用PHP&XML编制迷你搜索引擎(二)
- 用PHP&XML编制迷你搜索引擎(四)
- 用PHP&XML编制迷你搜索引擎(一)
- PHP编制搜索引擎的一些思路
- PHP 和 XML: 使用expat函数(一)
- [xml] Bug when installing PHP with libxml2-2.9.0?
- xml存储数据的简单例子,php&xml留言板
- PHP 中修改xml节点数据的函数
- PHP中XPATH 实现xml及html文件快速解析(附xml做小型数据库实现六级单词快速查询实例)
- PHP - XML - Creating XML
- PHP中Simplexml_Load_file解析xml实例
- php xml-rpc 第三方工具使用 - The Incutio XML-RPC Library for PHP
- php生成xml简单实例代码
- PHP读取配置文件类实例(可读取ini,yaml,xml等)
- php操作XML,读取数据和写入数据的方法
- PHP 生成xml
- 用PHP与XML 联手进行网站编程(一)
- php中对xml读取的相关函数的介绍一
- PHP搜索引擎开发纪实[2]