我們在實際的編碼中,可以利用以下就是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");
- ?>
怎麼樣,通過對上面這段代碼的理解,新手們是否已經掌握了PHP實現站內搜索引擎的具體方法呢?