Fare un Search Engine per il vostro Web site con PHP

| by Rory Canyon | October 28, 2005
Ciò mani sull'articolo di programmazione di PHP fornisce la conoscenza necessaria per progettare e sviluppare un Search Engine per il vostro Web site usando la versione 4.0 di PHP e sopra. Fare un Search Engine per il vostro Web site con PHP è realmente facile e fornisce la funzionalità notevole richiesta da la maggior parte dei Web site piccoli-medi. Questo articolo introduce ogni i punti dello sviluppo, compreso sia il disegno che la programmazione di PHP. Le abilità del calcolatore e la conoscenza di base dei fondamenti del HTML sono richieste. L'approvazione, cominciamo ora.

Punto 1: Scatola di ricerca di disegno

Sotto la vostra radice di Web site, fare una lima denominata search.htm o qualche cosa che gradiate e scrive dentro il seguente codice a macchina:

<html>

<head>

<title>Web Search</title>

http-equiv= " Soddisfare-Tipo " content= " testo/HTML " di <meta >

</head>

text= <body " #000000 " " del #FFFFFF " del bgcolor= >

action= " search.php " " dell'alberino " " del method= del name= " form1 del <form >

width= <table " 100% " cellspacing= " 0 " cellpadding= " 0 " >

<tr>

width= " 36% " del <td >

align= " centro " del <div >

name= " parola chiave " " del testo " del type= del <input >

</div>

</td>

width= " 64% " del <td >

il type= del <input " presenta " il name= " presenta " il value= " ricerca " >

</td>

</tr>

</table>

</form>

</body>

</html>

Punto 2: Scrivere la lima di search.php. È il nucleo del vostro Search Engine di Web site.

Sotto la vostra radice di Web site, generare una lima denominata search.php o qualche cosa che gradiate.

<? php

parole chiavi di //get

$keyword=trim ($_POST [“parola chiave„]);

//check se la parola chiave è vuota

se ("" di $keyword==) {

non echeggiare " parole chiavi ";

uscita;

}

?>

Con sopra, potete dare i suggerimenti ai vostri utenti quando si dimenticano di entrare in una parola chiave. Ora passiamo attraverso tutti i lime o articoli nel vostro Web site.

<? php

listFiles di funzione ($dir) {

$handle=opendir ($dir);

mentre (falso! == ($file=readdir ($handle))){

se ($file! = ". “&&$file! =„. „) {

//if è un indice, allora continua

se (is_dir (“$dir/$file„)){

listFiles (“$dir/$file„);

}

altrimenti {

//process la ricerca qui con lo scritto seguente di PHP

}

}

}

}

?>

I seguenti scritti leggono, lime e controllo trattati se le lime contengono $keyword. Se $keyword è trovato nella lima, l'indirizzo della lima sarà conservato in un alline-tipo variabile.

<? php

listFiles di funzione ($dir, $keyword, &$array) {

$handle=opendir ($dir);

mentre (falso! == ($file=readdir ($handle))){

se ($file! = ". “&&$file! =„. „) {

se (is_dir (“$dir/$file„)){

listFiles (“$dir/$file„, $keyword, $array);

}

altrimenti {

lima di //read

$data=fread (fopen (“$dir/$file„, “r„), filesize (“$dir/$file„));

ricerca search.php in se di //avoid

se ($file! = " search.php ") {

parola chiave di //contain?

se (eregi (“$keyword„, $data)){

$array [] = " $dir/$file ";

}

}

}

}

}

}

allineamento $array di //define

$array=array ();

funzione di //execute

listFiles (“. „, “php„, $array);

risultati di ricerca di //echo/print

foreach ($array come $value) {

eco “$value„. “<br> n„;

}

?>

Ora, unire i programmi elencati sopra, troverete tutti i risultati relativi nei vostri Web site sarete trovati ed elencati. Un'ottimizzazione ulteriore del Search Engine può essere presa aggiungendo quanto segue,

1, elenca il titolo di tutti i risultati di ricerca

SOSTITUIRE QUANTO SEGUE

se (eregi (“$keyword„, $data)){

$array [] = " $dir/$file ";

}

CON

se (eregi (“$keyword„, $data)){

se (eregi (“<title> (. +)

</title> ", $data, $m)){

$title=$m [“1„];

}

altrimenti {

$title= " nessun titolo ";

}

$array [] = " $dir/$file $title ";

}

2, aggiungono i collegamenti a cercare i risultati

CAMBIARE QUANTO SEGUE

foreach ($array come $value) {

eco “$value„. “<br> n„;

}

A

foreach ($array come $value) {

elencare ($filedir, $title) il =split (“[]„, $value, “2„);

echeggiare “il <a href=$filedir>$value</a>„. “<br> n„;

}

Scadenza stabilita 3 per l'esecuzione di PHP

AGGIUNGERE QUANTO SEGUE ALL'INIZIO DELLE LIME DI PHP

set_time_limit (“600„);

La suddetta unità è second&#65292; così dieci minuti è il litmit.

Ora, unire tutti i suddetti programmi ed ottenere la lima completa di search.php come seguendo,

<? php

set_time_limit (“600„);

$keyword=trim ($_POST [“parola chiave„]);

se ("" di $keyword==) {

l'eco " entra prego nella vostra parola chiave ";

uscita;

}

listFiles di funzione ($dir, $keyword, &$array) {

$handle=opendir ($dir);

mentre (falso! == ($file=readdir ($handle))){

se ($file! = ". “&&$file! =„. „) {

se (is_dir (“$dir/$file„)){

listFiles (“$dir/$file„, $keyword, $array);

}

altrimenti {

$data=fread (fopen (“$dir/$file„, “r„), filesize (“$dir/$file„));

se (eregi (“<body ([^>] +) > (. +) </body>„, $data, $b)){

$body=strip_tags ($b [“2„]);

}

altrimenti {

$body=strip_tags ($data);

}

se ($file! = " search.php ") {

se (eregi (“$keyword„, $body)){

se (eregi (“<title> (. +) </title>„, $data, $m)){

$title=$m [“1„];

}

altrimenti {

$title= " nessun titolo ";

}

$array [] = " $dir/$file $title ";

}

}

}

}

}

}

$array=array ();

listFiles (“. „, “$keyword„, $array);

foreach ($array come $value) {

elencare ($filedir, $title) il =split (“[]„, $value, “2„);

echeggiare “il <a href=$filedir target=_blank>$title </a>„. “<br> n„;

}

?>

Ora, avete fatto un Search Engine per il vostro Web site, lo godete!

Article Source: http://www.articleset.com



About the Author

Rory Canyon is the founder of ScriptMenu.com, a free web directory for PHP, ASP, ASP.NET, PERL, XML, Java, JavaScript, Flash, CFML, Python and other web programming resources.

For more information, visit http://www.scriptmenu.com » Read more articles by Rory Canyon
You are welcome to publish or reprint this article free of charge, provided: