国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) php教程 做個(gè)自己站內(nèi)搜尋引擎_PHP教程

做個(gè)自己站內(nèi)搜尋引擎_PHP教程

Jul 21, 2016 pm 04:09 PM
dreamweaver 作者 搜尋引擎 朋友 網(wǎng)站 自己

ccterran(原作)

作者:iwind

? 朋友用dreamweaver做了一個(gè)網(wǎng)站,沒有動態(tài)的內(nèi)容,只是一些個(gè)人收藏的文章,個(gè)人介紹等等。現(xiàn)在內(nèi)容比較多了,想叫我?guī)退鲆粋€(gè)搜索引擎。說實(shí)在的,這是一個(gè)不難的問題,于是就隨手做了一個(gè)?,F(xiàn)在我在其它論壇上也看到有人想做這個(gè),于是就想說說這方面的知識,重在了解一下方法。

寫程序前先要想好一個(gè)思路,下面是我的思路,可能誰有更好的,但注意這只是一個(gè)方法問題 :遍歷所有文件 ? 讀取內(nèi)容 ? 搜索關(guān)鍵字,如果匹配就放入一個(gè)數(shù)組 ? 讀數(shù)組。在實(shí)現(xiàn)這些步驟之前,我假定你的網(wǎng)頁都是標(biāo)準(zhǔn)的,就是有標(biāo)題(),也有( ),如果你是用dreamweaver或者frontpage設(shè)計(jì)的,那么除非你故意刪掉,它們都在存在的。下面就讓我們一步步來完成并在工程中改善這個(gè)搜索引擎。

一,設(shè)計(jì)搜索表單
在網(wǎng)站的根目錄下建個(gè)search.htm,內(nèi)容如下


搜索表單



?
???
?????
?????
???
?

???????

?????????
???????

?????

???????
?????




二,搜索程序
再在根目錄下建個(gè)search.php 的文件,用來處理search.htm表單傳過來的數(shù)據(jù).內(nèi)容如下
//獲取搜索關(guān)鍵字
$keyword=trim($_POST[“keyword”]);
//檢查是否為空
if($keyword==””){
echo”您要搜索的關(guān)鍵字不能為空”;
exit;//結(jié)束程序
}
?>

這樣如果訪問者輸入的關(guān)鍵字為空時(shí),可以做出提示。下面是遍歷所有文件。

我們可以用遞歸的方法遍歷所有的文件,可以用函數(shù)opendir,readdir,也可以用PHP Directory的類。我們現(xiàn)在用前者.
//遍歷所有文件的函數(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{
//在這里進(jìn)行處理
}
}
}
}

?>

在紅字的地方我們可以對搜索到的文件進(jìn)行讀取,處理.下面就是讀取文件內(nèi)容,并檢查內(nèi)容中是否含有關(guān)鍵字$keyword,如果含有就把文件地址賦給一個(gè)數(shù)組。
//$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"."
\n";
}
?>

現(xiàn)在把這個(gè)結(jié)果和開頭的一段程序結(jié)合起來,輸入一個(gè)關(guān)鍵字,然后就會發(fā)現(xiàn)你的網(wǎng)站中的相關(guān)結(jié)果都被搜索出來了。我們現(xiàn)在在把它完善一下。
1,列出內(nèi)容的標(biāo)題

????????????????????????? if(eregi("$keyword",$data)){
????????????????? $array[]="$dir/$file";
????????????????????????? }
改成
????????????????????????? if(eregi("$keyword",$data)){
?????????????????????????????????? if(eregi("(.+)",$data,$m)){
??????????????????????? $title=$m["1"];
?????????????????????????????????? }
?????????????????????????????????? else{
??????????????????????? $title="沒有標(biāo)題";
?????????????????????????????????? }
?????????????????????????????????? $array[]="$dir/$file $title";
?????????????????????????? }
原理就是,如果在文件內(nèi)容中找到xxx,那么就把xxx取出來作為標(biāo)題,如果找不到那么就把標(biāo)題命名未”沒有標(biāo)題”.

2,只搜索網(wǎng)頁的內(nèi)容的主題部分。
做網(wǎng)頁時(shí)一定會有很多html代碼在里面,而這些都不是我們想要搜索的,所以要去除它們。我現(xiàn)在用正則表達(dá)式和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($b["2"]);
??????????????????????? }
??????????????????????? else{
???????????????? $body=strip_tags($data);
??????????????????????? }
??????????????????????? if($file!="search.php"){
??????????????????????????? if(eregi("$keyword",$body)){

3,標(biāo)題上加鏈接
foreach($array as $value){
?? echo "$value"."
\n";
}
改成
foreach($array as $value){
?? //拆開
?? list($filedir,$title)=split(“[ ]”,$value,”2”);
?? //輸出
?? echo "$value"."
\n";
}
4防止超時(shí)
如果文件比較多,那么防止PHP執(zhí)行時(shí)間超時(shí)是必要的??梢栽谖募^加上
set_time_limit(“600”);
以秒為單位,所以上面是設(shè)10分鐘為限。


所以完整的程式是
set_time_limit("600");
//取得搜尋關(guān)鍵字
$keyword=trim($_POST["keyword" ]);
//檢查是否為空
if($keyword==""){
?? echo"您要搜尋的關(guān)鍵字不能為空";
?? exit;//結(jié)束程序
}
function listFiles($dir,$keyword,&$array){
?? $handle=opendir($dir);
?? while(false!==($file=readdir($file ))){
????????? if($file!="."&&$file!=".."){
?????????Files(" $dir/$file",$keyword,$array);
????????? }
?????????????,"r"),filesize("$ dir/$file"));
???????????????????????if(eregi,"

??????????????????????? }
????>???????????????? $body=strip_tags($data);
????????????????????????? if($file!="search.php"){
?????????????????????????????????????????? if(eregi("(.)",$data,$m)){
??????=$m["1"];
???????????????????????????????????????????????? else{
???????????????????????????????????????????? $array[]="$dir/$file $title" ;
??????????????????????????? }
??????????????? }
????? }
?? }
}
$array=array();
listFiles("."$key$array="$key);
listFiles("."$key);foreach($array as $value){
?? //拆開
?? list($filedir,$title)=split("[ ]",$value,"2");
?? //輸出
?? echo "$title "."
n";
}
?>

到此為止,你已經(jīng)做好了自己的一個(gè)搜尋引擎,你也可以透過修改內(nèi)容處理部分來改進(jìn)它,可以實(shí)現(xiàn)搜尋標(biāo)題,或搜尋內(nèi)容的功能。也可以考慮分頁。這些都留給你自己吧。

這裡說明一下用preg_match取代eregi,會快很多。這裡只是為了簡單易懂,所以使用了常用的eregi.

?

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/314558.htmlTechArticleccterran(原作) 作者:iwind 朋友用dreamweaver做了一個(gè)網(wǎng)站,沒有動態(tài)的內(nèi)容,只是一些個(gè)人收藏的文章,個(gè)人介紹等等?,F(xiàn)在內(nèi)容比較多了...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

dreamweaver怎麼調(diào)整文字位置 dreamweaver怎麼調(diào)整文字位置 Apr 09, 2024 am 02:24 AM

Dreamweaver 中調(diào)整文字位置可以透過以下步驟完成:選擇文本,使用文字位置調(diào)整器進(jìn)行水平調(diào)整:左對齊、右對齊、居中對齊;2. 進(jìn)行垂直調(diào)整:上對齊、下對齊、垂直居中;3. 按Shift 鍵並使用方向鍵微調(diào)位置;4. 使用快速鍵快速對齊:左對齊(Ctrl/Cmd + L)、右對齊(Ctrl/Cmd + R)、居中對齊(Ctrl/Cmd + C)。

dreamweaver網(wǎng)頁製作怎麼加入影片 dreamweaver網(wǎng)頁製作怎麼加入影片 Apr 09, 2024 am 01:42 AM

使用 Dreamweaver 嵌入影片:插入影片元素。選擇並上傳視訊檔案。設(shè)定影片類型、URL、尺寸、自動播放和控制。插入影片。可選:自訂影片外觀。

dreamweaver怎麼調(diào)整行間距 dreamweaver怎麼調(diào)整行間距 Apr 09, 2024 am 03:00 AM

在 Dreamweaver 中調(diào)整行間距分四步驟進(jìn)行:選擇文字、開啟「段落」面板、調(diào)整「行距」選項(xiàng),最後按一下「確定」以套用變更。

dreamweaver字體怎麼設(shè)定 dreamweaver字體怎麼設(shè)定 Apr 09, 2024 am 02:54 AM

可以在 Dreamweaver 中透過以下方式設(shè)定字體:使用「屬性」面板選擇字體、字號、顏色。使用 CSS 設(shè)定整個(gè)網(wǎng)站或特定元素的字體。在 HTML 程式碼中直接使用「font」標(biāo)籤設(shè)定字體。

dreamweaver怎麼設(shè)定文字大小 dreamweaver怎麼設(shè)定文字大小 Apr 09, 2024 am 02:18 AM

在 Dreamweaver 中設(shè)定文字大小,只需:選擇文字進(jìn)入「文字」選單選擇「字體大小」選擇所需大小按 Enter 儲存

網(wǎng)頁設(shè)計(jì)軟體dreamweaver怎麼設(shè)定為中文 網(wǎng)頁設(shè)計(jì)軟體dreamweaver怎麼設(shè)定為中文 Apr 09, 2024 am 12:39 AM

若要將Dreamweaver 設(shè)定為中文,請按以下步驟操作:開啟Dreamweaver;在首選項(xiàng)中將「使用者介面語言」變更為「簡體中文」或「繁體中文」;重新啟動Dreamweaver;檢查「說明」選單中的“關(guān)於Dreamweaver」項(xiàng)目以驗(yàn)證語言設(shè)定。

dreamweaver怎麼正文縮排 dreamweaver怎麼正文縮排 Apr 09, 2024 am 02:15 AM

Dreamweaver 中縮排正文的方法有四種:縮排單一段落:格式> 段落> 縮排多段落:段落面板中設(shè)定縮排值使用樣式:在段落樣式對話方塊中設(shè)定縮排值使用縮排鍵:Tab 鍵向右縮進(jìn),Shift + Tab 鍵向左縮排

dreamweaver怎麼加入圖片 dreamweaver怎麼加入圖片 Apr 09, 2024 am 03:30 AM

要在 Dreamweaver 中插入圖片,請點(diǎn)擊“插入”選單並選擇“圖像”,然後導(dǎo)航到圖片檔案並選擇它。其他方法包括:拖放檔案或直接插入 HTML 程式碼。調(diào)整屬性包括更改大小、對齊、新增邊框和輸入替代文字。

See all articles