je suis en train de faire un moteur de recherche interne pour mon site.
1/ Je récupère le mot cle de recherche transmis par formulaire:
Code : Tout sélectionner
$recherche = $_POST['rech'];
$recherche = trim($recherche);Je souhaite que les mots recherché soient surlignés dans l'affichage final
Code : Tout sélectionner
$requete="SELECT * FROM table WHERE champ1 LIKE '%$recherche%' OR champ2 LIKE '%$recherche%''";
$resultat=mysql_query($requete) or die ("Problème lors de la requête. Erreur: ".mysql_error());
while($ligne=mysql_fetch_array($resultat)){
$valeur1 = $ligne[champ1];
$valeur2 = $ligne[champ2];
// recherche et remplacement du mot de la recherche pour l'entourer d'un <span> de mise ne forme
$pattern = '('. quotemeta($recherche) .')';
$replacement = "<span class='selection'>\\1</span>";
$valeur1 = eregi_replace($pattern, $replacement, $valeur1);
$valeur2 = eregi_replace($pattern, $replacement, $valeur2);
// Affichage du résultat mis en forme
echo "<p>$valeur1 </p>";
echo "<p>$valeur2 </p>";
}Quand je fais la recherche SQL, elle est insensible aux accents.
Quand je fais la recherche PHP, elle est insensible à la casse mais sensible aux accents.
Si je fais une recherche sur "pre":
- SQL va me retourner les enregistrements contenant "précision", "âpre", "premier",...
- PHP va uniquement surligner "âpre", "premier"
Mon problème est une incohérence des recherches. Je vais avoir des champs de texte sans rien de surligné, c'est déroutant pour l'utilisateur (et pour moi).
Je souhaite avoir deux recherches cohérentes:
Soit tout insensible aux accents // Soit tout sensible aux accents
J'ai essayé de remplacer tous les caractères accentués par leur équivalent sans accent. Le pb est que je me retrouve avec un texte de résultat sans les accents. Je veux un texte juste (accentué) en retour.
J'espère que qqn pourra m'aider!!
D'avance, merci,
Antonio