相關(guān)資訊
- 《戰(zhàn)國(guó)無(wú)雙4-2》怎么換服裝?戰(zhàn)國(guó)無(wú)
- 關(guān)于責(zé)任的名言警句大全
- 《戰(zhàn)國(guó)無(wú)雙4-2》PC版如何聯(lián)機(jī)? 戰(zhàn)
- 戰(zhàn)國(guó)無(wú)雙4-2技能覺(jué)醒牛逼嗎 全新
- 《戰(zhàn)國(guó)無(wú)雙4-2》手柄無(wú)效怎么解決
- 戰(zhàn)國(guó)無(wú)雙4-2如何設(shè)置語(yǔ)言 戰(zhàn)國(guó)無(wú)雙
- 戰(zhàn)國(guó)無(wú)雙4-2怎么樣跳過(guò)進(jìn)入開(kāi)場(chǎng)動(dòng)畫(huà)
- 什么是應(yīng)屆生畢業(yè)生
- 應(yīng)屆生簡(jiǎn)歷自我評(píng)價(jià)
- 應(yīng)屆生簡(jiǎn)歷怎么寫(xiě)
本類(lèi)常用軟件
-
福建農(nóng)村信用社手機(jī)銀行客戶(hù)端下載下載量:584204
-
Windows優(yōu)化大師下載量:416896
-
90美女秀(視頻聊天軟件)下載量:366961
-
廣西農(nóng)村信用社手機(jī)銀行客戶(hù)端下載下載量:365699
-
快播手機(jī)版下載量:325855
每日一囧
本文章分享給各位,教你如何利用PHP做一個(gè)站內(nèi)全能的搜索引擎,希望對(duì)大家有用。
重在了解一下方法。寫(xiě)程序前先要想好一個(gè)思路,下面是我的思路,可能誰(shuí)有更好的,但注意這只是一個(gè)方法問(wèn)題 :遍歷所有文件,讀取內(nèi)容,搜索關(guān)鍵字,如果匹配就放入一個(gè)數(shù)組,讀數(shù)組。在實(shí)現(xiàn)這些步驟之前,我假定你的網(wǎng)頁(yè)都是標(biāo)準(zhǔn)的,就是有標(biāo)題(<title></title>),也有(<bod *></body>),如果你是用dreamweaver或者frontp...
正文:朋友用dreamweaver做了一個(gè)網(wǎng)站,沒(méi)有動(dòng)態(tài)的內(nèi)容,只是一些個(gè)人收藏的文章,個(gè)人介紹等等,F(xiàn)在內(nèi)容比較多了,想叫我?guī)退鲆粋(gè)搜索引擎。說(shuō)實(shí)在的,這是一個(gè)不難的問(wèn)題,于是就隨手做了一個(gè),F(xiàn)在我在其它論壇上也看到有人想做這個(gè),于是就想說(shuō)說(shuō)這方面的知識(shí),重在了解一下方法。
寫(xiě)程序前先要想好一個(gè)思路,下面是我的思路,可能誰(shuí)有更好的,但注意這只是一個(gè)方法問(wèn)題 :遍歷所有文件 讀取內(nèi)容 搜索關(guān)鍵字,如果匹配就放入一個(gè)數(shù)組 讀數(shù)組。在實(shí)現(xiàn)這些步驟之前,我假定你的網(wǎng)頁(yè)都是標(biāo)準(zhǔn)的,就是有標(biāo)題(<title></title>),也有(<bod *></body>),如果你是用dreamweaver或者frontpage設(shè)計(jì)的,那么除非你故意刪掉,它們都在存在的。下面就讓我們一步步來(lái)完成并在工程中改善這個(gè)搜索引擎。
一,設(shè)計(jì)搜索表單
在網(wǎng)站的根目錄下建個(gè)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>
二,搜索程序
再在根目錄下建個(gè)search.php 的文件,用來(lái)處理search.htm表單傳過(guò)來(lái)的數(shù)據(jù).內(nèi)容如下
<?php
//獲取搜索關(guān)鍵字
$keyword=trim($_POST[“keyword”]);
//檢查是否為空
if($keyword==””){
echo”您要搜索的關(guān)鍵字不能為空”;
exit;//結(jié)束程序
}
?>
這樣如果訪問(wèn)者輸入的關(guān)鍵字為空時(shí),可以做出提示。下面是遍歷所有文件。
我們可以用遞歸的方法遍歷所有的文件,可以用函數(shù)opendir,readdir,也可以用PHP Directory的類(lèi)。我們現(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{
//在這里進(jìn)行處理
}
}
}
}
?>
在紅字的地方我們可以對(duì)搜索到的文件進(jìn)行讀取,處理.下面就是讀取文件內(nèi)容,并檢查內(nèi)容中是否含有關(guān)鍵字$keyword,如果含有就把文件地址賦給一個(gè)數(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)在把這個(gè)結(jié)果和開(kāi)頭的一段程序結(jié)合起來(lái),輸入一個(gè)關(guān)鍵字,然后就會(huì)發(fā)現(xiàn)你的網(wǎng)站中的相關(guān)結(jié)果都被搜索出來(lái)了。我們現(xiàn)在在把它完善一下。
1,列出內(nèi)容的標(biāo)題
把
if(eregi("$keyword",$data)){
$array[]="$dir/$file";
}
改成
if(eregi("$keyword",$data)){
if(eregi("<title>(.+)</title>",$data,$m)){
$title=$m["1"];
}
else{
$title="沒(méi)有標(biāo)題";
}
$array[]="$dir/$file $title";
}
原理就是,如果在文件內(nèi)容中找到<title>xxx</title>,那么就把xxx取出來(lái)作為標(biāo)題,如果找不到那么就把標(biāo)題命名未”沒(méi)有標(biāo)題”.
寫(xiě)程序前先要想好一個(gè)思路,下面是我的思路,可能誰(shuí)有更好的,但注意這只是一個(gè)方法問(wèn)題 :遍歷所有文件 讀取內(nèi)容 搜索關(guān)鍵字,如果匹配就放入一個(gè)數(shù)組 讀數(shù)組。在實(shí)現(xiàn)這些步驟之前,我假定你的網(wǎng)頁(yè)都是標(biāo)準(zhǔn)的,就是有標(biāo)題(<title></title>),也有(<bod *></body>),如果你是用dreamweaver或者frontpage設(shè)計(jì)的,那么除非你故意刪掉,它們都在存在的。下面就讓我們一步步來(lái)完成并在工程中改善這個(gè)搜索引擎。
一,設(shè)計(jì)搜索表單
在網(wǎng)站的根目錄下建個(gè)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>
二,搜索程序
再在根目錄下建個(gè)search.php 的文件,用來(lái)處理search.htm表單傳過(guò)來(lái)的數(shù)據(jù).內(nèi)容如下
<?php
//獲取搜索關(guān)鍵字
$keyword=trim($_POST[“keyword”]);
//檢查是否為空
if($keyword==””){
echo”您要搜索的關(guān)鍵字不能為空”;
exit;//結(jié)束程序
}
?>
這樣如果訪問(wèn)者輸入的關(guān)鍵字為空時(shí),可以做出提示。下面是遍歷所有文件。
我們可以用遞歸的方法遍歷所有的文件,可以用函數(shù)opendir,readdir,也可以用PHP Directory的類(lèi)。我們現(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{
//在這里進(jìn)行處理
}
}
}
}
?>
在紅字的地方我們可以對(duì)搜索到的文件進(jìn)行讀取,處理.下面就是讀取文件內(nèi)容,并檢查內(nèi)容中是否含有關(guān)鍵字$keyword,如果含有就把文件地址賦給一個(gè)數(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)在把這個(gè)結(jié)果和開(kāi)頭的一段程序結(jié)合起來(lái),輸入一個(gè)關(guān)鍵字,然后就會(huì)發(fā)現(xiàn)你的網(wǎng)站中的相關(guān)結(jié)果都被搜索出來(lái)了。我們現(xiàn)在在把它完善一下。
1,列出內(nèi)容的標(biāo)題
把
if(eregi("$keyword",$data)){
$array[]="$dir/$file";
}
改成
if(eregi("$keyword",$data)){
if(eregi("<title>(.+)</title>",$data,$m)){
$title=$m["1"];
}
else{
$title="沒(méi)有標(biāo)題";
}
$array[]="$dir/$file $title";
}
原理就是,如果在文件內(nèi)容中找到<title>xxx</title>,那么就把xxx取出來(lái)作為標(biāo)題,如果找不到那么就把標(biāo)題命名未”沒(méi)有標(biāo)題”.
熱門(mén)評(píng)論
最新評(píng)論