站内搜索对于一个网站来说是基本的网站功能。我们可以通过PHP来实现这一功能。希望新手们能够通过本文介绍的PHP实现站内搜索引擎的方法学到新的知识。
我们在实际的编码中,可以利用PHP提供的应用程序来实现我们的站内搜索引擎的搭建。下面我们将会把具体的实现代码贴上。我们可以将PHP实现站内搜索引擎做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果。
以下就是PHP实现站内搜索引擎的具体代码:
- <?
- include ("include/common.inc");
- $ title = "Search" ;
- include("include/header.inc");
- ?>
- < P >
- < FORM ACTION = "<? echo " $PHP_SELF"; ?> " METHOD = "POST" >
- < INPUT TYPE = "text" NAME = "searchstr" value = "<? echo " $searchstr"; ?> "
- SIZE = "20" MAXLENGTH = "30" >
- < INPUT TYPE = "submit" VALUE = "Search!" >
- </ FORM >
- </ P >
- <?
- if ( ! empty($searchstr) )
- {
- // empty()用来检查查询字串是否为空
- // 如果不为空,调用grep查询
- echo " < HR > \n";
- // 调用grep对所有文件进行大小写非敏感模式的查询
- $ cmdstr = "grep -i $searchstr *" ;
- $ fp = popen ( $cmdstr, "r" ); // 执行命令并输出管道
- $ myresult = array (); // 存储查询结果
- while( $ buffer = fgetss ($fp, 4096))
- {
- // grep返回这样格式: 文件名:匹配字串出现行数
- // 因此我们利用函数split()分离处理数据
- list($fname, $fline) = split(":",$buffer, 2);
- // 我们只输出第一次匹配的结果
- if ( !defined($myresult[$fname]))
- $myresult[$fname] = $fline;
- }
- // 现在我们将结果存储在数组中,下面就可以处理并输出了
- if ( count($myresult) )
- {
- echo " < OL > \n";
- while(list($fname,$fline) = each($myresult))
- echo " < LI >
- < A HREF =\"$fname\" > $fname </ A > : $fline </ LI > \n";
- echo " </ OL > \n";
- }
- else
- {
- // 如果没有查询结果
- echo "Sorry. Search on < B > $searchstr </ B >
- returned no results. < BR > \n";
- }
- pclose($fp);
- }
- ?>
- <?
- include ("include/footer.inc");
- ?>
From:http://developer.51cto.com/art/200911/165121.htm