Petit moteur de recherche en php ? Help me
Résolu/Fermé
A voir également:
- Petit moteur de recherche en php ? Help me
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Easy php - Télécharger - Divers Web & Internet
- Installer qwant moteur de recherche - Télécharger - Navigateurs
- Petit l ✓ - Forum Loisirs / Divertissements
14 réponses
Bonjour,
Je t'ai fait ça, ça marche chez moi.
Je t'ai fait ça, ça marche chez moi.
<html> <?php $mot="hello"; $nom_fichier="bob.html"; $array_fichier=file($nom_fichier);// met le fichier ligne par ligne dans l'array //on parcour chaque ligne $r=1; foreach($array_fichier as $cle=>$value){ if(strstr($value,$mot)){ // si on trouve le mot dans la ligne //titre souligne: echo "<br><u> Resultat ".$r."</u>:<br>"; //dans la ligne on remplace le mot par la mise en forme HTML <font color.... et le mot $value_modifiee = str_replace($mot, "<font color='red'>".$mot."</font>", $value); echo $array_fichier[$cle-2]."<br>".$array_fichier[$cle-1]."<br>";// les deux lignes avant echo $value_modifiee."<br>";// la ligne avec le mot en rouge echo $array_fichier[$cle+1]."<br>".$array_fichier[$cle+2]."<br>";// les deux lignes après //on increment le numero de resultat $r++; } } ?> </html>
Bonjour,
Effectivement ça marche aussi chez moi. Et je t'en remercie. Mais il y a des petits erreur que je n'arrive pas à corriger. Par exemple dans mon fichier HTML, il y a un tableau et quand je lui demande de chercher un mot dans un tableau. Le résultat est vide. Et aussi je voudrais que mon moteur de recherche fasse pas la différence entre majuscule et miniscule. Par exemple si je lui demande de chercher le mot "hello", il peut trouver dans les resultats "Hello" ou "HEllo" ou "HELLO" .... Voila mais petit soucis si quelqu'un peut m'aider. Encore merci merci merci pour avoir pris de ton temps pour moi.
Effectivement ça marche aussi chez moi. Et je t'en remercie. Mais il y a des petits erreur que je n'arrive pas à corriger. Par exemple dans mon fichier HTML, il y a un tableau et quand je lui demande de chercher un mot dans un tableau. Le résultat est vide. Et aussi je voudrais que mon moteur de recherche fasse pas la différence entre majuscule et miniscule. Par exemple si je lui demande de chercher le mot "hello", il peut trouver dans les resultats "Hello" ou "HEllo" ou "HELLO" .... Voila mais petit soucis si quelqu'un peut m'aider. Encore merci merci merci pour avoir pris de ton temps pour moi.
Bonjour,
pour le pb des majuscules minuscule, je t'ai réglé ça:
(il faut remplacer les str....() par des preg_......
dans
voici le code:
Par contre pour ton pb de tableau je ne vois pas comment est fait ton fichier, donnes moi un bout d'exemple si tu peux.
pour le pb des majuscules minuscule, je t'ai réglé ça:
(il faut remplacer les str....() par des preg_......
dans
"#".$mot."#i", le i veut dire ne pas tenir compte de la casse;
voici le code:
<html> <?php $mot="HEllo"; $nom_fichier="bob.html"; $array_fichier=file($nom_fichier);// met le fichier ligne par ligne dans l'array //on parcour chaque ligne $r=1; foreach($array_fichier as $cle=>$value){ if(preg_match("#".$mot."#i",$value)){ // si on trouve le mot dans la ligne //titre souligne: echo "<br><u> Resultat ".$r."</u>:<br>"; //dans la ligne on remplace le mot par la mise en forme HTML <font color.... $value_modifiee = preg_replace("#".$mot."#i", "<font color='red'>".$mot."</font>", $value); echo $array_fichier[$cle-2]."<br>".$array_fichier[$cle-1]."<br>";// les deux lignes avant echo $value_modifiee."<br>";// la ligne avec le mot en rouge echo $array_fichier[$cle+1]."<br>".$array_fichier[$cle+2]."<br>";// les deux lignes après //on increment le numero de resultat $r++; } } ?> </html>
Par contre pour ton pb de tableau je ne vois pas comment est fait ton fichier, donnes moi un bout d'exemple si tu peux.
Merci, tu es trop rapide :) encore merci
alors j'ai fais une copie de la partie tableau du code source de ma page html :
<table border=1 cellpadding=3>
<tr><td>Bob </td><td> pecheur</td>
<tr><td>Pierre </td><td> pompier</td>
<tr><td>Jacque <td> plombier</td>
<tr><td>Gael </td><td> chirurgien</td>
</table>
Donc par exemple, quand je tape Pierre, il met resultat 1 : (avec 5 lignes blanche)
Voila
Merci Merci Merci Merci
alors j'ai fais une copie de la partie tableau du code source de ma page html :
<table border=1 cellpadding=3>
<tr><td>Bob </td><td> pecheur</td>
<tr><td>Pierre </td><td> pompier</td>
<tr><td>Jacque <td> plombier</td>
<tr><td>Gael </td><td> chirurgien</td>
</table>
Donc par exemple, quand je tape Pierre, il met resultat 1 : (avec 5 lignes blanche)
Voila
Merci Merci Merci Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re bonjour,
C'est les tags HTML qui gênaient
je t'ai fait un fichier un peu plus complet avec le form pour saisir le mot, une fonction qui supprime les tags html au moment du traitement
et de l'affichage.
j'ai aussi traité le cas ou c'est Pierre qui est écrit dans le fichier et que tu tapes pierre, on réaffiche bien Pierre avec une majuscule, tel qu'il était dans le fichier.
A toi de jouer !
C'est les tags HTML qui gênaient
je t'ai fait un fichier un peu plus complet avec le form pour saisir le mot, une fonction qui supprime les tags html au moment du traitement
et de l'affichage.
j'ai aussi traité le cas ou c'est Pierre qui est écrit dans le fichier et que tu tapes pierre, on réaffiche bien Pierre avec une majuscule, tel qu'il était dans le fichier.
<html> <form method="post" action="moteur_php.php"> <input type="text" name="mot_rech" value=""> <input type="submit" name="rechercher" value="Rechercher dans le fichier"> </form> <br><br> <?php //fonction qui supprime les tags html , (je l'ai recuperee sur un site) function stripHTMLtags($texte){ //On retire le code HTML $mots = explode("<",$texte); $texte = ""; $nbmots = count($mots); for ($m = 0; $m < $nbmots; $m++){ $mot = $mots[$m]; $finbalise = strpos($mot,">",0); if ($finbalise > 0) { $mot = substr($mot,$finbalise+1); } $texte .= "$mot"; } return $texte; } //fin fonction ///traitement if(isset($_POST['rechercher'])){// si le formulaire a ete poste echo "La réponse:<br>"; $mot=$_POST['mot_rech']; $nom_fichier="bob2.html"; $array_fichier=file($nom_fichier);// met le fichier ligne par ligne dans l'array //on parcour chaque ligne $r=1; foreach($array_fichier as $cle=>$value){ $value_sans_html=stripHTMLtags($value); if(preg_match("#".$mot."#i",$value_sans_html)){ // si on trouve le mot dans la ligne //titre souligne: echo "<br><u> Resultat ".$r."</u>:<br>"; //dans la ligne on remplace le mot par la mise en forme HTML <font color.... // on recherche d'abord le mot avec sa casse exacte dans le fichier, pour le réafficher tel qu'il est et pas tel qu'il a ete tape $rech_mot=preg_match("#".$mot."#i",$value_sans_html,$matches); $mot_exact_trouve=$matches[0]; $value_modifiee = preg_replace("#".$mot."#i", "<font color='red'>".$mot_exact_trouve."</font>", $value_sans_html); echo stripHTMLtags($array_fichier[$cle-2])."<br>".stripHTMLtags($array_fichier[$cle-1])."<br>";// les deux lignes avant echo $value_modifiee."<br>";// la ligne avec le mot en rouge echo stripHTMLtags($array_fichier[$cle+1])."<br>".stripHTMLtags($array_fichier[$cle+2])."<br>";// les deux lignes après //on increment le numero de resultat $r++; } } } ?> </html>
A toi de jouer !
Bonjour,
Merci alain, je viens de le tester sur mon site et tout marche comme je le souhaitais. Un grand merci pour avoir pris de ton temps et aussi un grand merci pour avoir mis des commentaires qui m'ont beaucoup aider à comprendre. Je vais encore faire des tests pour voir si tout fonctionne parfaitement et je te tiendrais au courant.
MERCI !!!
Merci alain, je viens de le tester sur mon site et tout marche comme je le souhaitais. Un grand merci pour avoir pris de ton temps et aussi un grand merci pour avoir mis des commentaires qui m'ont beaucoup aider à comprendre. Je vais encore faire des tests pour voir si tout fonctionne parfaitement et je te tiendrais au courant.
MERCI !!!
Bonjour,
Je souhaiterais améliorer encore un peu mon moteur de recherche mais j'ai du mal. J'aimerais qu'une fois ma recherche réalisée, il y ait le nombre de resultat afficher (exemple : il y a 40 resultats du mot bob). Et aussi je comprend pas, je sais pas si c'est normal ou pas mais quand je tape mon mot dans la case et que je tape ensuite sur entrer, ça passe a la ligne en dessous et ça lance pas la recherche du mot (je sais pas si je suis clair) mais en gros pour faire une recherche je suis obligé de prendre la souris et cliquez sur le bouton Rechercher.
Merci,
Belle soirée
Je souhaiterais améliorer encore un peu mon moteur de recherche mais j'ai du mal. J'aimerais qu'une fois ma recherche réalisée, il y ait le nombre de resultat afficher (exemple : il y a 40 resultats du mot bob). Et aussi je comprend pas, je sais pas si c'est normal ou pas mais quand je tape mon mot dans la case et que je tape ensuite sur entrer, ça passe a la ligne en dessous et ça lance pas la recherche du mot (je sais pas si je suis clair) mais en gros pour faire une recherche je suis obligé de prendre la souris et cliquez sur le bouton Rechercher.
Merci,
Belle soirée
Salut Greg,
quand je tape mon mot dans la case et que je tape ensuite sur entrer, ça passe a la ligne en dessous et ça lance pas la recherche du mot
C'est normal, la touche entrée soumet bien le formulaire, mais dans mon code je teste que le bouton "Rechercher... " a bien été cliqué, je te modifie ça
une fois ma recherche réalisée, il y ait le nombre de resultat afficher
pas de pb je te fais ça, le résultat sera affiché à la fin, pour l'afficher avant la liste, c'est un peu plus compliqué
Voilà:
@lain
quand je tape mon mot dans la case et que je tape ensuite sur entrer, ça passe a la ligne en dessous et ça lance pas la recherche du mot
C'est normal, la touche entrée soumet bien le formulaire, mais dans mon code je teste que le bouton "Rechercher... " a bien été cliqué, je te modifie ça
une fois ma recherche réalisée, il y ait le nombre de resultat afficher
pas de pb je te fais ça, le résultat sera affiché à la fin, pour l'afficher avant la liste, c'est un peu plus compliqué
Voilà:
<html> <form method="post" action="moteur_php.php"> <input type="text" name="mot_rech" value=""> <input type="submit" name="rechercher" value="Rechercher dans le fichier"> </form> <br><br> <?php //fonction qui supprime les tags html , (je l'ai recuperee sur un site) function stripHTMLtags($texte){ //On retire le code HTML $mots = explode("<",$texte); $texte = ""; $nbmots = count($mots); for ($m = 0; $m < $nbmots; $m++){ $mot = $mots[$m]; $finbalise = strpos($mot,">",0); if ($finbalise > 0) { $mot = substr($mot,$finbalise+1); } $texte .= "$mot"; } return $texte; } //fin fonction ///traitement if(isset($_POST['rechercher']) || $_POST['mot_rech'] !=""){// si le formulaire a ete poste echo "La réponse:<br>"; $mot=$_POST['mot_rech']; $nom_fichier="bob2.html"; $array_fichier=file($nom_fichier);// met le fichier ligne par ligne dans l'array // i,itialisation des variables $r=1; $nb_trouves=0; //on parcourt chaque ligne foreach($array_fichier as $cle=>$value){ $value_sans_html=stripHTMLtags($value); if(preg_match("#".$mot."#i",$value_sans_html)){ // si on trouve le mot dans la ligne $nb_trouves ++; // on incremente le nb //titre souligne: echo "<br><u> Resultat ".$r."</u>:<br>"; //dans la ligne on remplace le mot par la mise en forme HTML <font color.... // on recherche d'abord le mot avec sa casse exacte dans le fichier, pour le réafficher tel qu'il est et pas tel qu'il a ete tape $rech_mot=preg_match("#".$mot."#i",$value_sans_html,$matches); $mot_exact_trouve=$matches[0]; $value_modifiee = preg_replace("#".$mot."#i", "<font color='red'>".$mot_exact_trouve."</font>", $value_sans_html); echo stripHTMLtags($array_fichier[$cle-2])."<br>".stripHTMLtags($array_fichier[$cle-1])."<br>";// les deux lignes avant echo $value_modifiee."<br>";// la ligne avec le mot en rouge echo stripHTMLtags($array_fichier[$cle+1])."<br>".stripHTMLtags($array_fichier[$cle+2])."<br>";// les deux lignes après //on increment le numero de resultat $r++; } } echo "<br><br>Le mot <font color='red'><b>$mot</b></font> a été trouvé <b>$nb_trouves</b> fois."; } ?> </html>
@lain
bonjour alain,
J'ai toujours quelques difficultés en php. J'aimerais savoir si il était possible que tu me fournisses ton adresse email pour pouvoir communiquer directement via email au lieu de passer par ce forum. Merci
Cordialement
J'ai toujours quelques difficultés en php. J'aimerais savoir si il était possible que tu me fournisses ton adresse email pour pouvoir communiquer directement via email au lieu de passer par ce forum. Merci
Cordialement