php站内搜索代码.docx

上传人:牧羊曲112 文档编号:3163742 上传时间:2023-03-11 格式:DOCX 页数:5 大小:38.47KB
返回 下载 相关 举报
php站内搜索代码.docx_第1页
第1页 / 共5页
php站内搜索代码.docx_第2页
第2页 / 共5页
php站内搜索代码.docx_第3页
第3页 / 共5页
php站内搜索代码.docx_第4页
第4页 / 共5页
php站内搜索代码.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《php站内搜索代码.docx》由会员分享,可在线阅读,更多相关《php站内搜索代码.docx(5页珍藏版)》请在三一办公上搜索。

1、php站内搜索代码 读取内容- 搜索关键字,如果匹配就放入一个数组-读数组。 在实现这些步骤之前,我假定你的网页都是标准的,就是有标题(),也有(),如果你是用dreamweaver或者frontpage设计的,那么除非你故意删掉,它们都在存在的。下面就让我们一步步来完成并在工程中改善这个搜索引擎。 一,设计搜索表单在网站的根目录下建个search.htm,内容如下搜索表单 二,搜索程序再在根目录下建个search.php 的文件,用来处理search.htm表单传过来的数据. 内容如下 这样如果访问者输入的关键字为空时,可以做出提示。下面是遍历所有文件。 我们可以用递归的方法遍历所有的文件,

2、可以用函数opendir,readdir,也可以用PHP Directory的类。我们现在用前者. 在红字的地方我们可以对搜索到的文件进行读取,处理.下面就是读取文件内容,并检查内容中是否含有关键字$keyword,如果含有就把文件地址赋给一个数组。 ?php/$dir是搜索的目录,$keyword是搜索的关键字 ,$array是存放的数组 function listFiles($dir,$keyword,&$array) $handle=opendir($dir); while(false!=($file=readdir($handle) if($file!=.&$file!=.) if(i

3、s_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.

4、n;? 现在把这个结果和开头的一段程序结合起来,输入一个关键字,然后就会发现你的网站中的相关结果都被搜索出来了。 我们现在在把它完善一下。 1,列出内容的标题把if(eregi($keyword,$data)$array=$dir/$file;改成if(eregi($keyword,$data)if(eregi(.+),$data,$m)$title=$m1;else$title=没有标题;$array=$dir/$file $title;原理就是,如果在文件内容中找到xxx,那么就把xxx取出来作为标题,如果找不到那么就把标题命名未”没有标题”. 2,只搜索网页的内容的主题部分。做网页时一定

5、会有很多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(+)(.+),$data,$b)$body=strip_tags($b2);else$body=stri

6、p_tags($data);if($file!=search.php)if(eregi($keyword,$body) 3,标题上加链接foreach($array as $value)echo $value.n;改成foreach($array as $value)/拆开list($filedir,$title)=split(“ ”,$value,”2”);/输出echo $value.n;4防止超时如果文件比较多,那么防止PHP执行时间超时是必要的。可以在文件头加上set_time_limit(“600”);以秒为单位,所以上面是设10分钟为限。 所以完整的程序就是?phpset_time

7、_limit(600);/获取搜索关键字$keyword=trim($_POSTkeyword);/检查是否为空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($di

8、r/$file,r),filesize($dir/$file);if(eregi(+)(.+),$data,$b)$body=strip_tags($b2);else$body=strip_tags($data);if($file!=search.php)if(eregi($keyword,$body)if(eregi(.+),$data,$m)$title=$m1;else$title=没有标题;$array=$dir/$file $title;$array=array;listFiles(.,$keyword,$array);foreach($array as $value)/拆开list($filedir,$title)=split( ,$value,2);/输出echo $title .n;? 到此为止,你已经做好了自己的一个搜索引擎,你也可以通过修改内容处理部分来改进它,可以实现搜索标题,或者搜索内容的功能。也可以考虑分页。这些都留给你自己吧。 这里说明一下用preg_match代替eregi,会快很多。这里只是为了通俗易懂,所以使用了常用的eregi.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号