|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 271 ![]() |
Salut
A la suite de ce topic : http://www.developpez.net/forums/sho...=319973&page=3 Je me suis permis d'ouvrir un autre traitant d'une éventuelle suite. Tout d'abord , j'ai fait un moteur de recherche et j'aimerais mettre en surbrillance la partie du mot recherché. exemple : pour le mot "Charte" , si l'utilisateur saisit "Ch" , il aura affiché comme résultat Charte. mais j'aimerais mettre en avant dans le résultat : Pour la recherche : Ch , vous avez comme résultats : (la c'est facile) Charte (pas aussi évident la) $CHAMP=explode("",$SAISIE_DU_USER); garde touts les mots saisies , il y a t'il un moyen de le concaténer avec une balise <font color> ? ou encore faut t'il le faire dans le FOR ? Cordialement, |
|
|
00
|
|
|
#2 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
C'est plus simple avec les expression régulières :
Code :
echo '<td>'. preg_replace('.(' . preg_quote($SAISIE) . ').', '<span style="color: red">\1</span>', $data["description"]) .'</td>'; Code :
echo '<td>'.$data["description"].'</td>'; ![]() Note : votre première requête (avec le COUNT) n'est pas utile puisque la fonction mysql_num_rows sur la deuxième vous aurait directement donné cette information (une requête au lieu de deux). |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 271 ![]() |
1) A propos du num_rows pour le count. Merci ça fonctionnes.
2) Pour la couleur ça marches aussi , PS : Pour la couleur , il prend en compte les majuscules ou minuscules de la saisie , contrairement a la recherche qui ne tient pas compte de ça. il y a une solution ? |
|
|
00
|
|
|
#4 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
J'aurais dû vous le préciser : il suffit d'ajouter l'option i à l'expression régulière après le délimiteur de fin, ce qui nous donne donc :
Code :
echo '<td>'. preg_replace('.(' . preg_quote($SAISIE) . ').i', '<span style="color: red">\1</span>', $data["description"]) .'</td>'; |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 271 ![]() |
Merci beaucoup , ça fonctionnes très bien.
Sinon julp , tu peux donner quelques informations à propos du code ?
|
|
|
00
|
|
|
#6 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Partie '.(' . preg_quote($SAISIE) . ').i' :
Le point de début et de fin de l'expression régulière sert ici de délimiteurs (il n'est pas imposé et nous sommes libres de le choisir). J'ai volontairement choisi ce caractère car il sera protégé par la fonction preg_quote (elles protégent tous les caractères possédant une signification particulière : ., +, *, parenthèses, ...). En effet, si le délimiteur vient à figurer dans l'expression elle-même il nécessite alors un échappement. Les parenthèses servent ici à indiquer que la partie qui correspond à son contenu sera capturée pour réutilisation par le second paramètre de la fonction preg_replace dans notre cas. Enfin, l'option (après le délimiteur de fin de l'expression) i indique que l'expression ne sera pas sensible à la casse. Partie '<span style="color: red">\1</span>' : Rien de nouveau si ce n'est la partie \1 qui fait référence à la partie capturée par la première parenthèse de l'expression régulière. Il s'agit d'une sorte de variable qui sera systématiquement remplacée par la chaîne satisfaisant la parenthèse capturante correspondant au nombre indiqué. Je ne peux dévoiler ici tous les aspects concernant les expressions régulières et je ne suis pas certain d'être assez clair dans mes explications c'est pourquoi je vous renvoie pour approfondir vos connaissances vers le tutoriel suivant : Initiation aux expressions régulières en PHP. |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 271 ![]() |
Ok, merci beaucoup !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com