OVH Cloud OVH Cloud

coloration

6 réponses
Avatar
Utilisateur1
1/ Je veux dans un texte affiché, colorer les lettres trouvées.

exemple :

je cherche 'an' (une suite de lettre variable)

et mon texte (qui est variable) contient :

'Au nouvel an et dans la bergerie , le loup n'est pas mechant'

je dois obtenir : (j'ai mis en majuscule le texte qui doit etre coloré)

'Au nouvel AN et dANs la bergerie , le loup n'est pas mechANt'


2/ idem, mais cette fois, je cherche à colorer les occurences de 'an' et de
'pas' avec des couleurs differentes
donc avce a priori uen boucle for mais il faudra eviter peut etre les
balises de coloration deja mises.

6 réponses

Avatar
Bloodshed
1/ Je veux dans un texte affiché, colorer les lettres trouvées.

exemple :

je cherche 'an' (une suite de lettre variable)

et mon texte (qui est variable) contient :

'Au nouvel an et dans la bergerie , le loup n'est pas mechant'

je dois obtenir : (j'ai mis en majuscule le texte qui doit etre coloré)

'Au nouvel AN et dANs la bergerie , le loup n'est pas mechANt'


2/ idem, mais cette fois, je cherche à colorer les occurences de 'an' et de
'pas' avec des couleurs differentes
donc avce a priori uen boucle for mais il faudra eviter peut etre les
balises de coloration deja mises.
Va voir du côté des expressions régulières


Il y a une fonction qui n'a pas besoin de boucle et qui peut colorer (remplacer AN par <font...>AN</font> par exemple) n'importe quel textes dans une chaîne en une fois.

Avatar
Regis
Utilisateur1 disait :

1/ Je veux dans un texte affiché, colorer les lettres trouvées.

exemple :

je cherche 'an' (une suite de lettre variable)

et mon texte (qui est variable) contient :

'Au nouvel an et dans la bergerie , le loup n'est pas mechant'

je dois obtenir : (j'ai mis en majuscule le texte qui doit etre
coloré)

'Au nouvel AN et dANs la bergerie , le loup n'est pas mechANt'


2/ idem, mais cette fois, je cherche à colorer les occurences de 'an'
et de 'pas' avec des couleurs differentes
donc avce a priori uen boucle for mais il faudra eviter peut etre les
balises de coloration deja mises.


Ca doit pouvoir se faire dans les deux cas, sans difficulté, sans
boucle.

Limite, on peut imaginer une fonction à qui on passe le texte, le texte
à chercher et la couleur et qui renvoie le texte altéré.

Je ne vais pas m'étendre sur le 2è, je pense que le 1è devrait être
parlant :

$search='an';
$text='Au nouvel an et dans la bergerie , le loup n'est pas mechant';
$color='red';
echo str_replace("<font color="".$color."">".$search."</font>"
$search,$text);

Source :
http://fr3.php.net/manual/fr/function.str-replace.php

Régis.

Avatar
Antoun
ça dépend d'où vient ton texte... s'il sort d'une BDD, ou que d'une
façon ou d'une autre tu puisses le stocker dans une variable $texte,
rien de plus facile. Tu crées une classe CSS, par ex.:

<style>
.vert {background-color: green}
</style>

ensuite tu effectues un remplacement :

$texte = str_replace("an", "<span class=vert>an</span>", $texte) ;

si par contre ton texte est une page HTML déjà constituée, tu vas
galérer un peu... même si tu peux utiliser un truc comme $texte =
join('', file('toto.htm')). Peut-être qu'un javascript te permettrait de
mieux t'en sortir ? Ou alors une regex pour ne faire tes remplacement
que sur le body, et seulement en-dehors des balises ?
Avatar
Nudrema
Utilisateur1 wrote:

"bonjour, s'il vous plait, merci" ils se cachent où?

tu peux toujours regarder du côté de preg-replace-callback pr 2

--
Nudrema (S.F.)
http://tw.o0o.ch/
http://mangeur-de-cigogne.info/
Avatar
Couik
Bonjour,

Question : dans un même texte, y a t'il plusieurs recherches ?
Ceci justifirai plusieurs couleurs...

Ou alors, l'occurence "an" suivante trouvée à une couleur différente de cette
même occurence déjà trouvée

Cordialement
Couik

Utilisateur1 wrote:

1/ Je veux dans un texte affiché, colorer les lettres trouvées.

exemple :

je cherche 'an' (une suite de lettre variable)

et mon texte (qui est variable) contient :

'Au nouvel an et dans la bergerie , le loup n'est pas mechant'

je dois obtenir : (j'ai mis en majuscule le texte qui doit etre coloré)

'Au nouvel AN et dANs la bergerie , le loup n'est pas mechANt'


2/ idem, mais cette fois, je cherche à colorer les occurences de 'an' et de
'pas' avec des couleurs differentes
donc avce a priori uen boucle for mais il faudra eviter peut etre les
balises de coloration deja mises.


Avatar
Eric
Il manque une règle à ton problème : qu'advient-il quand les occurences se
croisent ?
par exemple si tu cherches 'AN' et 'NT' comme colorieras-tu le mot 'MRCHANT'
?

sinon mon idée est de remplacer les occurences par un mot clé ($) que tu es
sur de ne jamais voir ($1=an $2=pas), tu obtiendra ainsi 'Au nouvel $1 et
d$1s la bergerie , le loup n'est $2 mech$1t' puis tu remplaces $1 et $2 par
tes balises de couleurs


"Couik" a écrit dans le message de
news:c5f6g5$elh$
Bonjour,

Question : dans un même texte, y a t'il plusieurs recherches ?
Ceci justifirai plusieurs couleurs...

Ou alors, l'occurence "an" suivante trouvée à une couleur différente de
cette

même occurence déjà trouvée

Cordialement
Couik

Utilisateur1 wrote:

1/ Je veux dans un texte affiché, colorer les lettres trouvées.

exemple :

je cherche 'an' (une suite de lettre variable)

et mon texte (qui est variable) contient :

'Au nouvel an et dans la bergerie , le loup n'est pas mechant'

je dois obtenir : (j'ai mis en majuscule le texte qui doit etre coloré)

'Au nouvel AN et dANs la bergerie , le loup n'est pas mechANt'


2/ idem, mais cette fois, je cherche à colorer les occurences de 'an'
et de


'pas' avec des couleurs differentes
donc avce a priori uen boucle for mais il faudra eviter peut etre les
balises de coloration deja mises.