[Résolu] Surlignage de mots efficace

Surlignage de mots efficace [Résolu] - PHP - Programmation

Marsh Posté le 24-03-2005 à 03:32:12    

Bonjour,  
 
Mon but est de surligner des mots dans un texte.  
A priori, c'est simple. Mais le faire de manière efficace est une autre histoire... Voici un texte d'exemple et deux solutions foireuses :
 

  • Texte d'exemple :

Le Dell 1704FPV nouvelle version est équipé de la 1ère dalle PVA 16 ms. Serait-ce le 1er écran à concilier un temps de réponse rapide avec de larges angles de vue et un noir profond ?
 
 

  • Solution 1 :
Code :
  1. $chaineOk = eregi_replace ($mot, '<span style=\'background-color:red;\'>'.$mot.'</span>', $chaine);


Foireux à souhait : si mon mot est "le", je vais également surligner une partie des mots "nouvelle", "dalle", "angles".
 
 

  • Solution 2 :
Code :
  1. $chaineOk = eregi_replace ('[[:<:]]'.$mot.'.?[[:>:]]', '<span style=\'background-color:red;\'>'.$mot.'</span>', $chaine);


Plus intéressant : ça surligne bien le mot désiré comme il faut... mais il y a un problème. Pour les mots dont la première ou la dernière lettre est accentuée, pas de surlignage (ex: "écran" ). Pourtant, si le caractère accentué est au milieu du mot (ex: "manière" ), il n'y a pas de problème...
 
 

  • Donc je ne comprends pas trop ce dysfonctionnement...  :(  


  • Et je cherche la meilleure solution pour surligner des mots efficacement...  


Une idée ????


Message édité par philipMo le 24-03-2005 à 20:34:58
Reply

Marsh Posté le 24-03-2005 à 03:32:12   

Reply

Marsh Posté le 24-03-2005 à 09:09:40    

philipMo a écrit :

Et je cherche la meilleure solution pour surligner des mots efficacement...


ereg_replace n'est surement pas le meilleur moyen, si tu veux faire de la regexp utilise preg_replace et lit la doc : http://fr.php.net/manual/fr/refere [...] syntax.php

Reply

Marsh Posté le 24-03-2005 à 20:34:23    

soju a écrit :

ereg_replace n'est surement pas le meilleur moyen, si tu veux faire de la regexp utilise preg_replace et lit la doc : http://fr.php.net/manual/fr/refere [...] syntax.php


 
Merci pour le conseil.
 
Pour ceux que ça intéresse, voici la fonction que j'ai créée, fonction de base qui reste bien sûr à améliorer mais qui fonctionne très bien.  
 

Code :
  1. function surligner($mot, $texte, $couleur) {
  2. $mot_motif = '`(\b)('.$mot.')(\b)`i';
  3. $mot_sortie = '<span style=\'background-color:'.$couleur.';\'>'.$mot.'</span>';
  4. $texteSurligne = preg_replace($mot_motif, $mot_sortie, $texte);
  5. return $texteSurligne;
  6. }


 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed