Faire un Search Engine pour votre site Web avec PHP

| by Rory Canyon | October 28, 2005
Ceci des mains sur l'article de programmation de PHP fournit la connaissance nécessaire pour concevoir et développer un Search Engine pour votre site Web en utilisant la version 4.0 de PHP et en haut. La fabrication d'un Search Engine pour votre site Web avec PHP est vraiment facile et fournit la fonctionnalité substantielle exigée par la plupart des sites Web petits à moyens. Cet article présente chaque des étapes du développement, y compris la conception et la programmation de PHP. Des qualifications d'ordinateur et la connaissance de base des principes fondamentaux de HTML sont exigées. L'ok, commençons maintenant.

Étape 1 : Boîte de recherche de conception

Sous votre racine de site Web, faire un dossier appelé search.htm ou quelque chose que vous aimez et saisissent le code suivant :

<html>

<head>

<title>Web Search</title>

http-equiv= " Contenu-Type " content= " texte/HTML " de <meta >

</head>

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

action= " search.php " de " poteau " de method= du name= " form1 " de <form >

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

<tr>

width= " 36% " de <td >

align= " centre " de <div >

name= " mot-clé " des " textes " de type= de <input >

</div>

</td>

width= " 64% " de <td >

le type= de <input " soumettent " le name= " soumettent " le value= " recherche " >

</td>

</tr>

</table>

</form>

</body>

</html>

Étape 2 : Écrire le dossier de search.php. C'est le noyau de votre Search Engine de site Web.

Sous votre racine de site Web, créer un dossier appelé le search.php ou quelque chose que vous aimez.

< ? php

mots-clés de //get

$keyword=trim ($_POST [« mot-clé »]) ;

//check si le mot-clé est vide

si ("" de $keyword==) {

ne faire écho " aucun mot-clé " ;

sortie ;

}

?>

Avec en haut, vous pouvez donner des conseils à vos utilisateurs quand il oublie d'écrire un mot-clé. Maintenant passons par tous dossiers ou articles dans votre site Web.

< ? php

listFiles de fonction ($dir) {

$handle=opendir ($dir) ;

tandis que (faux ! == ($file=readdir ($handle))){

si ($file ! = ". « &&$file ! = ».  ») {

//if c'est un annuaire, continuent alors

si (is_dir (« $dir/$file »)){

listFiles (« $dir/$file ») ;

}

autrement {

//process la recherche ici avec le manuscrit suivant de PHP

}

}

}

}

?>

Les manuscrits suivants lisent, les dossiers et le contrôle de processus si les dossiers contiennent $keyword. Si $keyword est trouvé dans le dossier, l'adresse de dossier sera sauvée dans un ranger-type variable.

< ? php

listFiles de fonction ($dir, $keyword, &$array) {

$handle=opendir ($dir) ;

tandis que (faux ! == ($file=readdir ($handle))){

si ($file ! = ". « &&$file ! = ».  ») {

si (is_dir (« $dir/$file »)){

listFiles (« $dir/$file », $keyword, $array) ;

}

autrement {

dossier de //read

$data=fread (fopen (« $dir/$file », « r »), filesize (« $dir/$file »));

recherche search.php lui-même de //avoid

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

mot-clé de //contain ?

si (eregi (« $keyword », $data)){

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

}

}

}

}

}

}

rangée $array de //define

$array=array () ;

fonction de //execute

listFiles (« .  », « php », $array) ;

résultats de recherche de //echo/print

foreach ($array comme $value) {

écho « $value ». « <br> n » ;

}

?>

Maintenant, combiner les programmes énumérés ci-dessus, vous trouverez tous résultats relatifs dans vos sites Web serez trouvés et énumérés. Une autre optimisation du Search Engine peut être prise en ajoutant le suivant,

1, énumèrent le titre de tous les résultats de recherche

REMPLACER LE SUIVANT

si (eregi (« $keyword », $data)){

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

}

AVEC

si (eregi (« $keyword », $data)){

si (eregi (« <title> (. +)

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

$title=$m [« 1 »] ;

}

autrement {

$title= " aucun titre " ;

}

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

}

2, ajoutent des liens à rechercher des résultats

CHANGER LE SUIVANT

foreach ($array comme $value) {

écho « $value ». « <br> n » ;

}

À

foreach ($array comme $value) {

énumérer ($filedir, $title) le =split (« [] », $value, « 2 ») ;

faire écho le « <a href=$filedir>$value</a> ». « <br> n » ;

}

Délai 3 réglé pour l'exécution de PHP

AJOUTER LE SUIVANT AU DÉBUT DES DOSSIERS DE PHP

set_time_limit (« 600 ») ;

L'unité ci-dessus est second&#65292 ; tellement dix minutes est le litmit.

Maintenant, combiner tous programmes ci-dessus et obtenir le dossier complet de search.php comme en suivant,

< ? php

set_time_limit (« 600 ») ;

$keyword=trim ($_POST [« mot-clé »]) ;

si ("" de $keyword==) {

l'écho " écrivent svp votre mot-clé " ;

sortie ;

}

listFiles de fonction ($dir, $keyword, &$array) {

$handle=opendir ($dir) ;

tandis que (faux ! == ($file=readdir ($handle))){

si ($file ! = ". « &&$file ! = ».  ») {

si (is_dir (« $dir/$file »)){

listFiles (« $dir/$file », $keyword, $array) ;

}

autrement {

$data=fread (fopen (« $dir/$file », « r »), filesize (« $dir/$file »));

si (eregi (« <body ([^>] +) > (. +) </body> », $data, $b)){

$body=strip_tags ($b [« 2 »]) ;

}

autrement {

$body=strip_tags ($data) ;

}

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

si (eregi (« $keyword », $body)){

si (eregi (« <title> (. +) </title> », $data, $m)){

$title=$m [« 1 »] ;

}

autrement {

$title= " aucun titre " ;

}

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

}

}

}

}

}

}

$array=array () ;

listFiles (« .  », « $keyword », $array) ;

foreach ($array comme $value) {

énumérer ($filedir, $title) le =split (« [] », $value, « 2 ») ;

faire écho le « <a href=$filedir target=_blank>$title </a> ». « <br> n » ;

}

?>

Maintenant, vous avez fait un Search Engine pour votre site Web, l'appréciez !

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: