Bonjour
Je fais une recherche dans un fichier texte contenant des citations
Je fais la recherche sur mot(s) entiers(s) avec toutes possibilités de casse et d'accents (certains internautes les oublient ou se trompent !)
La recherche fonctionne parfaitement
Le problème vient du surlignement du(des) mot(mots) recherché(s) dans les résultats
Le(s) mot(s) recherché(s) sans accents : pas de pb, ils sont bien surlignés
Les mots avec caractères accentués non initiaux ou terminaux : pas de pb, ils sont bien surlignés
Les mots avec caractères accentués initiaux ou terminaux ne sont pas surlignés
Testez le si vous le désirez sur http://www.exemples-php.com/utilitaires-en-ligne/citations/citations.php
Le code ($mot : mot recherché, stockage des résultats dans un tableau)
Comment pourrais-je régler ce problème ?
Merci de porter attention à ce problème et bonne journée.
Je fais une recherche dans un fichier texte contenant des citations
Je fais la recherche sur mot(s) entiers(s) avec toutes possibilités de casse et d'accents (certains internautes les oublient ou se trompent !)
La recherche fonctionne parfaitement
Le problème vient du surlignement du(des) mot(mots) recherché(s) dans les résultats
Le(s) mot(s) recherché(s) sans accents : pas de pb, ils sont bien surlignés
Les mots avec caractères accentués non initiaux ou terminaux : pas de pb, ils sont bien surlignés
Les mots avec caractères accentués initiaux ou terminaux ne sont pas surlignés
Testez le si vous le désirez sur http://www.exemples-php.com/utilitaires-en-ligne/citations/citations.php
Le code ($mot : mot recherché, stockage des résultats dans un tableau)
Code:
$mot = trim($_GET['mot']);
if (strlen($mot) < 3) ... avertissement et retour au formulaire ...
else
{
$mot2 = strtr($mot,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
$resultats = array();
foreach($fichier as $ligne)
{
$ligne2 = strip_tags($ligne);
$ligne2 = strtr($ligne2,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
if (preg_match("/\b".$mot2."\b/i", $ligne2))
{
$mot3 = '<span class="surlignevert">'.$mot.'</span>';
$ligne3 = preg_replace("/\b".$mot."\b/i", $mot3, $ligne);
array_push($resultats, $ligne3);
}
}
... puis traitement, affichage des résultats ...
Comment pourrais-je régler ce problème ?
Merci de porter attention à ce problème et bonne journée.