Bonjour,
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:
2/ je fais une recherche dans ma base de données (PHP5, utf8_unicode_ci)
Je souhaite que les mots recherché soient surlignés dans l'affichage final
Maintenant, je vous explique mon souci:
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
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:
$recherche = $_POST['rech'];
$recherche = trim($recherche);
2/ je fais une recherche dans ma base de données (PHP5, utf8_unicode_ci)
Je souhaite que les mots recherché soient surlignés dans l'affichage final
$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>";
}
Maintenant, je vous explique mon souci:
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