设为首页 收藏本站
查看: 3160|回复: 0

[经验分享] 用PHP&XML编制迷你搜索引擎(三)

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2017-4-7 10:09:02 | 显示全部楼层 |阅读模式
用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文件的函数
functionxml_parse_from_file($parser,$file)
{
if(!file_exists($file))
{
die("Can’tfindfile"$file".");
}

if(!($fp=@fopen($file,"r")))
{
die("Can’topenfile"$file".");
}

while($data=fread($fp,4096))
{
if(!xml_parse($parser,$data,feof($fp)))
{
return(false);
}
}

fclose($fp);

return(true);
}



functionstart_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"|&nbsp;&nbsp;&nbsp;&nbsp;";
if($level-$lev>0)echo"+----";

echo"<ahref=$PHP_SELF?lev=$level&num=$levelcount[$level]>".
//加上每个元素节点的联接
trim($name)."&nbsp;</a>";

while(list($key,$val)=each($attrs)){
echo"<fontcolor=green>$key=>$val</font>;&nbsp;";
}
}


}

functionstop_element($parser,$name)
{
global$level;

$level-=1;
}

functiondata($parser,$data)
{
global$level,$hide;
if(!$hide)
if(trim($data)!=""){
echotrim($data);
}
}


//mainstart
global$hide,$lev,$num,$PHP_SELF;
$level=-1;
$hide=TRUE;

echo"<p><ahref=$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("XMLerror:%satline%d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}

xml_parser_free($parser);


?>
</body>
</html>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-361379-1-1.html 上篇帖子: PHP 5.0 中的对象重载技术研究 下篇帖子: 用PHP&XML编制迷你搜索引擎(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表