Moteur de recherche interne php sans bdd

Résolu/Fermé
Dartha - Modifié par Dartha le 8/06/2010 à 11:04
 tts-01 - 16 déc. 2010 à 10:22
Bonjour,
Je cherche en ce moment a faire un moteur de recherche interne sans utiliser de base de données en php.
Tout fonctionne très bien sauf quand il y a plus d'un mot, j'aimerai que la recherche s'effectue avec l'opérateur logique ou dès qu'il y a plus d'un mot. Je ne vois pas comment faire sans un switch mais c'est pas du tout pratique, avez-vous une idée ?

Voici mon code :

<?php

echo "<strong>Votre recherche : </strong>". $search."<br/><br/>";
$resultat=0;
if(strlen($search) <=3)
{
echo "Merci de rentrez un mot de plus de 3 caractères";
}
else
{
if($dossier = opendir('./pages/'))
{
while($fichier = readdir($dossier))
{
if($fichier != '.' && $fichier != '..')
{
// début balise pour effecuter la recherche en fonction du nb de mots

$contenu= file_get_contents('./pages/'.$fichier,FILE_USE_INCLUDE_PATH);
if (preg_match("/.".$search."/i", $contenu))
{
$resultat++;
preg_match('/\<title>(.+)\<\/title\>/Ui',$contenu,$titre);
echo '<strong>Titre de la page : </strong>'.$titre[1]. '<br/>';

// Récuperer uniquement contenu entre <body> et </body>
preg_match('#<body>(.+)</body>#isU', $contenu, $resume_preg);
$resume=strip_tags($resume_preg[1]);

echo '<font color="red"><strong>Contenu entier de la page : </strong></font>'.resume_mots($resume).'<br/>';
echo '<a href="./pages/' . $fichier . '">' . $fichier . '</a><br/>';
echo '---------------------------------------------------------------------------------<br/><br/>';
}
}
}
if($resultat==0)
{
echo "<strong>Aucun résultat trouvé, réessayer avec d'autres mots clés</strong><br/>";
}
echo '<br />';
echo 'Il y a <strong>' . $resultat .'</strong> résultat(s) à votre recherche';
closedir($dossier);
}
else
echo 'Erreur interne lors de la recherche';
}
?>


A voir également:

3 réponses

Foiesgras Messages postés 21 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 10 juin 2010 5
8 juin 2010 à 11:12
Tu pourrais préparer la string de recherche que tu utilise pour ton preg_match ($search).

Tu fais par exemple un str_replace(' ','|',$search) qui remplace tous les espace par une barre verticale, qui dans les regex veut dire 'ou'. Ensuite tu balance le tout dans le preg_match et si ta regex est bien formée ça recherche le premier mot clé ou le deuxième mot clé.

Tu trouveras plus d'infos sur les regex ici : https://www.commentcamarche.net/contents/803-php-expressions-regulieres
4
Ah super merci ! Ça marche nickel ! c'était si simple au final, merci beaucoup !
0
Foiesgras Messages postés 21 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 10 juin 2010 5
8 juin 2010 à 11:20
Les expressions régulières sont très puissantes, par contre je trouve toujours très difficile à les manipuler.
0
Clairement oui, j'ai eu du mal a bien m'en servir sur mon script actuelle, mais une fois maitrisé c'est vraiment énorme.
0
marion1984 Messages postés 79 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 30 novembre 2010 1
Modifié par marion1984 le 15/06/2010 à 15:06
je suis intéressée par ce code. Accepteriez vous de le passer et peut être m'aider un peu à le configurer ?
merci d'avance :)
0
pourrais tu me donner les codes de ton moteur stp il m'interesse beacoup
merci d'avance

merci d'avance
-2