首頁  >  文章  >  php教程  >  探讨PHP实现站内搜索引擎的具体方法

探讨PHP实现站内搜索引擎的具体方法

WBOY
WBOY原創
2016-06-13 11:06:44823瀏覽

我们在实际的编码中,可以利用以下就是PHP实现站内搜索引擎的具体代码:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><strong><font color="#006699"></font></strong></span><span>   </span></span></li>
<li class="">
<span></span><span class="tag-name"><strong><font color="#006699">include</font></strong></span><span>("include/common.inc");   </span>
</li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">title</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">"Search"</font></span><span>;   </span>
</li>
<li class=""><span>include("include/header.inc");   </span></li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span>   </span>
</li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">P</span><span class="tag">></span></span></font></strong><span>   </span>
</li>
<li class="alt">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">FORM</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">ACTION</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">" echo "</font></span><span>$PHP_SELF"; </span><span class="tag"><strong><font color="#006699">?></font></strong></span><span>" </span><span class="attribute"><font color="#ff0000">METHOD</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"POST"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span>   </span>
</li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">INPUT</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">TYPE</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"text"</font></span><span> </span><span class="attribute"><font color="#ff0000">NAME</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"searchstr"</font></span><span> </span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">" echo "</font></span><span>$searchstr"; </span><span class="tag"><strong><font color="#006699">?></font></strong></span><span>"   </span>
</li>
<li class="alt">
<span></span><span class="attribute"><font color="#ff0000">SIZE</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"20"</font></span><span> </span><span class="attribute"><font color="#ff0000">MAXLENGTH</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"30"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span>   </span>
</li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">INPUT</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">TYPE</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"submit"</font></span><span> </span><span class="attribute"><font color="#ff0000">VALUE</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"Search!"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span>   </span>
</li>
<li class="alt">
<span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">FORM</span><span class="tag">></span></font></strong><span>   </span>
</li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">P</span><span class="tag">></span></font></strong><span>   </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span>   </span>
</li>
<li class="">
<span></span><span class="tag-name"><strong><font color="#006699">if</font></strong></span><span> ( ! empty($searchstr) )   </span>
</li>
<li class="alt"><span>{   </span></li>
<li class=""><span>// empty()用来检查查询字串是否为空   </span></li>
<li class="alt"><span>// 如果不为空,调用grep查询   </span></li>
<li class="">
<span>echo "</span><strong><font color="#006699"><span class="tag"><span class="tag-name">HR</span><span class="tag">></span></span></font></strong><span>n";   </span>
</li>
<li class="alt"><span>// 调用grep对所有文件进行大小写非敏感模式的查询   </span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">cmdstr</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">"grep -i $searchstr *"</font></span><span>;   </span>
</li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">fp</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">popen</font></span><span>( $cmdstr, "r" ); // 执行命令并输出管道   </span>
</li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">myresult</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">array</font></span><span>(); // 存储查询结果   </span>
</li>
<li class="alt">
<span>while( $</span><span class="attribute"><font color="#ff0000">buffer</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">fgetss</font></span><span> ($fp, 4096))   </span>
</li>
<li class=""><span>{   </span></li>
<li class="alt"><span>// grep返回这样格式: 文件名:匹配字串出现行数   </span></li>
<li class=""><span>// 因此我们利用函数split()分离处理数据   </span></li>
<li class="alt"><span>list($fname, $fline) = split(":",$buffer, 2);   </span></li>
<li class=""><span>// 我们只输出第一次匹配的结果   </span></li>
<li class="alt"><span>if ( !defined($myresult[$fname]))   </span></li>
<li class=""><span>$myresult[$fname] = $fline;   </span></li>
<li class="alt"><span>}   </span></li>
<li class=""><span>// 现在我们将结果存储在数组中,下面就可以处理并输出了   </span></li>
<li class="alt"><span>if ( count($myresult) )   </span></li>
<li class=""><span>{   </span></li>
<li class="alt">
<span>echo "</span><strong><font color="#006699"><span class="tag"><span class="tag-name">OL</span><span class="tag">></span></span></font></strong><span>n";   </span>
</li>
<li class=""><span>while(list($fname,$fline) = each($myresult))   </span></li>
<li class="alt">
<span>echo "</span><strong><font color="#006699"><span class="tag"><span class="tag-name">LI</span><span class="tag">></span></span></font></strong><span>   </span>
</li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">A</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">HREF</font></span><span>="$fname"</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>$fname</span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">A</span><span class="tag">></span></font></strong><span> : $fline </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">LI</span><span class="tag">></span></font></strong><span>n";   </span>
</li>
<li class="alt">
<span>echo "</span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">OL</span><span class="tag">></span></font></strong><span>n";   </span>
</li>
<li class=""><span>}   </span></li>
<li class="alt"><span>else   </span></li>
<li class=""><span>{   </span></li>
<li class="alt"><span>// 如果没有查询结果   </span></li>
<li class="">
<span>echo "Sorry. Search on </span><strong><font color="#006699"><span class="tag"><span class="tag-name">B</span><span class="tag">></span></span></font></strong><span>$searchstr</span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">B</span><span class="tag">></span></font></strong><span>   </span>
</li>
<li class="alt">
<span>returned no results.</span><strong><font color="#006699"><span class="tag"><span class="tag-name">BR</span><span class="tag">></span></span></font></strong><span>n";   </span>
</li>
<li class=""><span>}   </span></li>
<li class="alt"><span>pclose($fp);   </span></li>
<li class=""><span>}   </span></li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span>   </span>
</li>
<li class="">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span>   </span>
</li>
<li class="alt">
<span></span><span class="tag-name"><strong><font color="#006699">include</font></strong></span><span>("include/footer.inc");   </span>
</li>
<li class="">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span>  </span>
</li>
</ol>

怎么样,通过对上面这段代码的理解,新手们是否已经掌握了PHP实现站内搜索引擎的具体方法呢?


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn