- 1. phpMyAdmin(支持對數(shù)據(jù)庫進行建立、復(fù)制,刪除數(shù)據(jù)等...
- 2. QuickPHP V1.12.1(php腳本調(diào)試工具) 綠色免費版
- 3. phpMyAdmin(支持對數(shù)據(jù)庫進行完全操控) V3.4.2.0 F...
- 4. phpMyAdmin(通過互聯(lián)網(wǎng)控制操作MYSQL的軟件) V3.4....
- 5. phpMyAdmin 3.4.0 RC2 多語綠色版_很方便的網(wǎng)絡(luò)遠M...
- 6. 基于PHP和MySql的個人文章發(fā)布/管理平臺Swan v1.0.0
- 7. 強大的PHP在線購物系統(tǒng)Avactis購物車系統(tǒng) V2.1
- 8. 不懂會計/計算機也能輕松運用零天房屋出租管理系統(tǒng)...
- 9. 免費解密php程序的黑刀Dezender 5.0 簡體中文版
- 10. MYSQL 遠理工具 phpMyAdmin 多國語言綠色免費版 V3...
運用PHP做一個全能搜索引擎
作者: 來源: 發(fā)布時間:2011-5-25 15:40:44 點擊:
本文章分享給各位,教你如何利用PHP做一個站內(nèi)全能的搜索引擎,希望對大家有用。
重在了解一下方法。寫程序前先要想好一個思路,下面是我的思路,可能誰有更好的,但注意這只是一個方法問題 :遍歷所有文件,讀取內(nèi)容,搜索關(guān)鍵字,如果匹配就放入一個數(shù)組,讀數(shù)組。在實現(xiàn)這些步驟之前,我假定你的網(wǎng)頁都是標(biāo)準(zhǔn)的,就是有標(biāo)題(<title></title>),也有(<bod *></body>),如果你是用dreamweaver或者frontp...
正文:朋友用dreamweaver做了一個網(wǎng)站,沒有動態(tài)的內(nèi)容,只是一些個人收藏的文章,個人介紹等等,F(xiàn)在內(nèi)容比較多了,想叫我?guī)退鲆粋搜索引擎。說實在的,這是一個不難的問題,于是就隨手做了一個,F(xiàn)在我在其它論壇上也看到有人想做這個,于是就想說說這方面的知識,重在了解一下方法。
寫程序前先要想好一個思路,下面是我的思路,可能誰有更好的,但注意這只是一個方法問題 :遍歷所有文件 讀取內(nèi)容 搜索關(guān)鍵字,如果匹配就放入一個數(shù)組 讀數(shù)組。在實現(xiàn)這些步驟之前,我假定你的網(wǎng)頁都是標(biāo)準(zhǔn)的,就是有標(biāo)題(<title></title>),也有(<bod *></body>),如果你是用dreamweaver或者frontpage設(shè)計的,那么除非你故意刪掉,它們都在存在的。下面就讓我們一步步來完成并在工程中改善這個搜索引擎。
一,設(shè)計搜索表單
在網(wǎng)站的根目錄下建個search.htm,內(nèi)容如下
<html>
<head>
<title>搜索表單</title>
<meta http-equiv="Content-Type" content="text/html; charset=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表單傳過來的數(shù)據(jù).內(nèi)容如下
<?php
//獲取搜索關(guān)鍵字
$keyword=trim($_POST[“keyword”]);
//檢查是否為空
if($keyword==””){
echo”您要搜索的關(guān)鍵字不能為空”;
exit;//結(jié)束程序
}
?>
這樣如果訪問者輸入的關(guān)鍵字為空時,可以做出提示。下面是遍歷所有文件。
我們可以用遞歸的方法遍歷所有的文件,可以用函數(shù)opendir,readdir,也可以用PHP Directory的類。我們現(xiàn)在用前者.
<?php
//遍歷所有文件的函數(shù)
function listFiles($dir){
$handle=opendir($dir);
while(false!==($file=readdir($handle))){
if($file!="."&&$file!=".."){
//如果是目錄就繼續(xù)搜索
if(is_dir("$dir/$file")){
listFiles("$dir/$file");
}
else{
//在這里進行處理
}
}
}
}
?>
在紅字的地方我們可以對搜索到的文件進行讀取,處理.下面就是讀取文件內(nèi)容,并檢查內(nèi)容中是否含有關(guān)鍵字$keyword,如果含有就把文件地址賦給一個數(shù)組。
<?php
//$dir是搜索的目錄,$keyword是搜索的關(guān)鍵字 ,$array是存放的數(shù)組
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{
//讀取文件內(nèi)容
$data=fread(fopen("$dir/$file","r"),filesize("$dir/$file"));
//不搜索自身
if($file!=”search.php”){
//是否匹配
if(eregi("$keyword",$data)){
$array[]="$dir/$file";
}
}
}
}
}
}
//定義數(shù)組$array
$array=array();
//執(zhí)行函數(shù)
listFiles(".","php",$array);
//打印搜索結(jié)果
foreach($array as $value){
echo "$value"."<br>n";
}
?>
現(xiàn)在把這個結(jié)果和開頭的一段程序結(jié)合起來,輸入一個關(guān)鍵字,然后就會發(fā)現(xiàn)你的網(wǎng)站中的相關(guān)結(jié)果都被搜索出來了。
寫程序前先要想好一個思路,下面是我的思路,可能誰有更好的,但注意這只是一個方法問題 :遍歷所有文件 讀取內(nèi)容 搜索關(guān)鍵字,如果匹配就放入一個數(shù)組 讀數(shù)組。在實現(xiàn)這些步驟之前,我假定你的網(wǎng)頁都是標(biāo)準(zhǔn)的,就是有標(biāo)題(<title></title>),也有(<bod *></body>),如果你是用dreamweaver或者frontpage設(shè)計的,那么除非你故意刪掉,它們都在存在的。下面就讓我們一步步來完成并在工程中改善這個搜索引擎。
一,設(shè)計搜索表單
在網(wǎng)站的根目錄下建個search.htm,內(nèi)容如下
<html>
<head>
<title>搜索表單</title>
<meta http-equiv="Content-Type" content="text/html; charset=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表單傳過來的數(shù)據(jù).內(nèi)容如下
<?php
//獲取搜索關(guān)鍵字
$keyword=trim($_POST[“keyword”]);
//檢查是否為空
if($keyword==””){
echo”您要搜索的關(guān)鍵字不能為空”;
exit;//結(jié)束程序
}
?>
這樣如果訪問者輸入的關(guān)鍵字為空時,可以做出提示。下面是遍歷所有文件。
我們可以用遞歸的方法遍歷所有的文件,可以用函數(shù)opendir,readdir,也可以用PHP Directory的類。我們現(xiàn)在用前者.
<?php
//遍歷所有文件的函數(shù)
function listFiles($dir){
$handle=opendir($dir);
while(false!==($file=readdir($handle))){
if($file!="."&&$file!=".."){
//如果是目錄就繼續(xù)搜索
if(is_dir("$dir/$file")){
listFiles("$dir/$file");
}
else{
//在這里進行處理
}
}
}
}
?>
在紅字的地方我們可以對搜索到的文件進行讀取,處理.下面就是讀取文件內(nèi)容,并檢查內(nèi)容中是否含有關(guān)鍵字$keyword,如果含有就把文件地址賦給一個數(shù)組。
<?php
//$dir是搜索的目錄,$keyword是搜索的關(guān)鍵字 ,$array是存放的數(shù)組
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{
//讀取文件內(nèi)容
$data=fread(fopen("$dir/$file","r"),filesize("$dir/$file"));
//不搜索自身
if($file!=”search.php”){
//是否匹配
if(eregi("$keyword",$data)){
$array[]="$dir/$file";
}
}
}
}
}
}
//定義數(shù)組$array
$array=array();
//執(zhí)行函數(shù)
listFiles(".","php",$array);
//打印搜索結(jié)果
foreach($array as $value){
echo "$value"."<br>n";
}
?>
現(xiàn)在把這個結(jié)果和開頭的一段程序結(jié)合起來,輸入一個關(guān)鍵字,然后就會發(fā)現(xiàn)你的網(wǎng)站中的相關(guān)結(jié)果都被搜索出來了。
[收藏此文章]
- 1. 動態(tài)網(wǎng)頁編程語言中的三大帝國ASP.JSP.PHP之間的較...
- 2. 關(guān)于PHP Parse Error: syntax error, unexpected $...
- 3. PHP的date()獲得比當(dāng)前時間少八小時的解決方法
- 4. php判斷值是否為空的實例分析
- 5. 教你配置xampp在php中使用sqlite3
- 6. 編寫留言本需要i注意到的三點(適用PHP和ASP)
- 7. 在個人主頁中運用ASP連接數(shù)據(jù)庫實現(xiàn)動態(tài)網(wǎng)頁
- 8. ASP、JSP、PHP三者之間的對比
- 9. linxu下的PHP如何安裝和配置
- 10. PHP中常見數(shù)據(jù)庫問題及解決方法
本類熱門
本類推薦
本站熱門
東坡下載 & 分享互聯(lián)網(wǎng) Copyright(C) 2008-2010 m.tipsywinegypsy.com All Rights Reserved! 網(wǎng)站備案/許可證號:京ICP備10000128號-1