Moteur de recherche interne php sans bdd [Résolu/Fermé]

Signaler
-
 tts-01 -
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';
}
?>


3 réponses

Messages postés
21
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
10 juin 2010
5
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Ah super merci ! Ça marche nickel ! c'était si simple au final, merci beaucoup !
Messages postés
21
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
10 juin 2010
5
Les expressions régulières sont très puissantes, par contre je trouve toujours très difficile à les manipuler.
Clairement oui, j'ai eu du mal a bien m'en servir sur mon script actuelle, mais une fois maitrisé c'est vraiment énorme.
Messages postés
79
Date d'inscription
mardi 18 mai 2010
Statut
Membre
Dernière intervention
30 novembre 2010
1
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 :)
pourrais tu me donner les codes de ton moteur stp il m'interesse beacoup
merci d'avance

merci d'avance