<a href="javascript:checkuserstatus('1','01_01','http:www.yahoo.com.cn') 链接指向哪里了

<a href="javascript:checkuserstatus('1','01_01','http:www.yahoo.com.cn') 链接指向哪里了,第1张

javascript:指的是伪协议,是指用url的形式调用javascript

这句话相当于调用了javascript方法checkuserstatus('1','01_01','http://www.yahoo.com.cn')

一般来说这个checkuserstatus是用Ajax向http://www.yahoo.com.cn发送请求查询用户状态的一个javascript函数

在网站的根目录下建个search.htm,内容如下

<html>

<head>

<title>搜索表单</title>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

</head>

<body bgcolor="#FFFFFF" text="#000000">

<form name="form1" method="post" action="search.php">

<table width="100%" cellspacing="0" cellpadding="0">

<tr>

<td width="36%">

<div align="center">

<input type="text" name="keyword">

</div>

</td>

<td width="64%">

<input type="submit" name="Submit" value="搜索">

</td>

</tr>

</table>

</form>

</body>

</html>

二,搜索程序

再在根目录下建个search.php 的文件,用来处理search.htm表单传过来的数据.内容如下

<?php

//获取搜索关键字

?$keyword=trim(?$_POST[“keyword”])

//检查是否为空

if(?$keyword==””){

echo”您要搜索的关键字不能为空”

exit//结束程序

}

?>

这样如果访问者输入的关键字为空时,可以做出提示。下面是遍历所有文件。

我们可以用递归的方法遍历所有的文件,可以用函数opendir,readdir,也可以用PHP Directory的类。我们现在用前者.

<?php

//遍历所有文件的函数

function listFiles(?$dir){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

//如果是目录就继续搜索

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file")

}

else{

//在这里进行处理

}

}

}

}

?>

在红字的地方我们可以对搜索到的文件进行读取,处理.下面就是读取文件内容,并检查内容中是否含有关键字?$keyword,如果含有就把文件地址赋给一个数组。

<?php

//?$dir是搜索的目录,?$keyword是搜索的关键字 ,?$array是存放的数组

function listFiles(?$dir,?$keyword,&?$array){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file",?$keyword,?$array)

}

else{

//读取文件内容

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

//不搜索自身

if(?$file!=”search.php”){

//是否匹配

if(eregi("?$keyword",?$data)){

?$array[]="?$dir/?$file"

}

}

}

}

}

}

//定义数组?$array

?$array=array()

//执行函数

listFiles(".","php",?$array)

//打印搜索结果

foreach(?$array as ?$value){

echo "?$value"."<br>"

}

?>

现在把这个结果和开头的一段程序结合起来,输入一个关键字,然后就会发现你的网站中的相关结果都被搜索出来了。我们现在在把它完善一下。

1,列出内容的标题

if(eregi("?$keyword",?$data)){

?$array[]="?$dir/?$file"

}

改成

if(eregi("?$keyword",?$data)){

if(eregi("<title>(.+)</title>",?$data,?$m)){

?$title=?$m["1"]

}

else{

?$title="没有标题"

}

?$array[]="?$dir/?$file ?$title"

}

原理就是,如果在文件内容中找到<title>xxx</title>,那么就把xxx取出来作为标题,如果找不到那么就把标题命名未”没有标题”.

2,只搜索网页的内容的主题部分。

做网页时一定会有很多html代码在里面,而这些都不是我们想要搜索的,所以要去除它们。我现在用正则表达式和strip_tags的配合,并不能把所有的都去掉。

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

//不搜索自身

if(?$file!=”search.php”){

//是否匹配

if(eregi("?$keyword",?$data)){

改为

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

if(eregi("<body([^>]+)>(.+)</body>",?$data,?$b)){

?$body=strip_tags(?$b["2"])

}

else{

?$body=strip_tags(?$data)

}

if(?$file!="search.php"){

if(eregi("?$keyword",?$body)){

3,标题上加链接

foreach(?$array as ?$value){

echo "?$value"."<br>"

}

改成

foreach(?$array as ?$value){

//拆开

list(?$filedir,?$title)=split(“[ ]”,?$value,”2”)

//输出

echo "<a href=?$filedir>?$value</a>"."<br>"

}

4防止超时

如果文件比较多,那么防止PHP执行时间超时是必要的。可以在文件头加上

set_time_limit(“600”)

以秒为单位,所以上面是设10分钟为限。

所以完整的程序就是

<?php

set_time_limit("600")

//获取搜索关键字

?$keyword=trim(?$_POST["keyword"])

//检查是否为空

if(?$keyword==""){

echo"您要搜索的关键字不能为空"

exit//结束程序

}

function listFiles(?$dir,?$keyword,&?$array){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file",?$keyword,?$array)

}

else{

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

if(eregi("<body([^>]+)>(.+)</body>",?$data,?$b)){

?$body=strip_tags(?$b["2"])

}

else{

?$body=strip_tags(?$data)

}

if(?$file!="search.php"){

if(eregi("?$keyword",?$body)){

if(eregi("<title>(.+)</title>",?$data,?$m)){

?$title=?$m["1"]

}

else{

?$title="没有标题"

}

?$array[]="?$dir/?$file ?$title"

}

}

}

}

}

}

?$array=array()

listFiles(".","?$keyword",?$array)

foreach(?$array as ?$value){

//拆开

list(?$filedir,?$title)=split("[ ]",?$value,"2")

//输出

echo "<a href=?$filedir target=_blank>?$title </a>"."<br>"

}

?>

到此为止,你已经做好了自己的一个搜索引擎,你也可以通过修改内容处理部分来改进它,可以实现搜索标题,或者搜索内容的功能。也可以考虑分页。这些都留给你自己吧。

这里说明一下用preg_match代替eregi,会快很多。这里只是为了通俗易懂,所以使用了常用的eregi.


欢迎分享,转载请注明来源:优选云

原文地址:https://54852.com/hy/1008092.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-06
下一篇2023-08-06

随机推荐

  • 阿玛尼ar60007值得买吗

    值得。安普里奥·阿玛尼AR60007是一款男士手表,性价比高,款式新颖,值得购买。1、性价比高。全自动机械表,看起来有质感,表带是意大利牛皮表带,戴起来很舒服,价格在3500左右。2、款式新颖。表盘是采用镂空设计,质感十足,看起来更适合年轻

    2023-12-14
    21200
  • 想使用国货,有没有好的国货化妆品品牌,淘宝店铺推荐呢

    美康粉黛:国民彩妆的骄傲,我都不用怎么介绍大家就知道的一个品牌。同时,这也是一个十分适合学生党的彩妆品牌,简直不要太白菜价,两百元就可以搞定全一套,都是性价比又超级超级的高,我会无限回购的一家。AMY安美:这个品牌你们肯定都知道的,最近风靡

    2023-12-14
    24400
  • bleu de chanel 香奈儿蔚蓝男士淡香水什么价位

    香奈儿 蔚蓝男士淡香水产品规格:100ml所属系列:蔚蓝男士淡香水系列产品分类: 香水  男士香水产品功效: 增香 催情产品简介:开瓶调—清新:令人振奋的清新感融入每一寸肌肤,自由的气息扑面而来。柑橘香调,香根草,粉红胡椒。主体调能量:无

    2023-12-14
    20100
  • 巴黎欧莱雅分别有那些系列价格多少

    21岁应该不需要抗皱系列吧,如果皮肤有些发黄可以用臻白系列吧、 呃,当然还要根据居住环境和个人需要。。 好啦。都在下面了,你自己决定吧。 [专业UV防护系列] 多重防护隔离乳SPF30 PA+++ 150RMB 多重防护隔离喷露SPF30+

    2023-12-14
    18400
  • 国内护肤品排名前十名有哪些品牌

    国内护肤品排名前十名有:百雀羚、自然堂、佰草集、相宜本草、韩束、珀莱雅、欧诗漫、温碧泉、水密码、御泥坊。具体如下:1、百雀羚百雀羚是经典国产品牌,创立于1931年,主要以“专为东方女性肌肤研发”为理念,为消费者提供更好的产品,且作为经典的品

    2023-12-14
    15000
  • 我国的国产化妆品有哪些

    相宜本草--诠释"本草养肤"理念,将汉方本草和现代科技相结合,加强有效成份渗透和吸收,开发出一系列美白、保湿、控油的产品,让肌肤内在重获健康,自然、主动而且持久地筑起肌肤外在的美丽。自然堂,伽蓝(集团)股份有限公司旗下产

    2023-12-14
    22100
  • 女孩子祛痘用什么护肤品

    祛痘护肤品的选择应该基于皮肤类型和痘痘状况。以下是一些常见的祛痘护肤品建议:清洁剂。清洁剂是清洁皮肤的重要工具,特别是对于容易出油或者油脂分泌过多的皮肤。选择一种温和的清洁剂,尽可能避免含有硬质颗粒和酒精等刺激性成分,以避免刺激和干燥皮肤。

    2023-12-13
    16300
  • 补水效果好的护肤品排名

    补水效果好的护肤品排名:玉兰油Olay、欧莱雅、雪花秀、科颜氏Kiehl's、倩碧Clinique、雅诗兰黛、兰芝Laneige、兰蔻Lancome、自然堂CHANDO、后Whoo,其中雅诗兰黛护肤品受到了很多消费者的喜爱。雅

    2023-12-13
    14700
  • 我用美凯莲祛斑全套有一个星期了,脸开始脱皮有针扎般痛,是过敏了还是有副作用

    祛斑不但要使用具备正规备案的祛斑产品,内外结合 同时使用。而且还需要配合改善日常不健康的生活习惯,这样科学的祛斑效果才是最好的。祛斑单单只依靠一种祛斑产品是不能够把色斑去除的,首先要分析身子色斑形成的具体原因,根据色斑形成的原因选择适合自己

    2023-12-13
    22000

发表评论

登录后才能评论
保存