Page 1 sur 1

Regex pour un "." dot

Posté : 24 avr. 2006, 00:19
par Mouet
Bonsoir,

Je vous fais part d'un petit prolème au quel je suis confronté:

Je voudrais remplacer les "Equipé ... ." Par "Equipé ... ." Mais en vert.

les ... représente une chaine composée de mots et chiffres et cette chaine est terminée par un "."

Pour ce, j'ai commencé avec les regex en faisant :

Code : Tout sélectionner

$v = preg_replace("/Equipé(.+)./","<font color=#1eff00>Equipé\\1 .</font>",$v);
Mais comme je m'en doutais, le "." n'est pas bon et doit surement être déffinit d'une autre facon que je ne connais pas =/

D'avance, merci

Mouet

Posté : 24 avr. 2006, 00:32
par Ryle
Dans les expression régulière, le . est utilisé pour représenter n'importe quel caractère. Si tu veux dire qu'il s'agit du caractère point, il te faut le protéger d'un antislash : \.

Tu peux également ajouter un "^" au début de ta chaine pour dire que celle ci doit obligatoirement commencer par "Equipé", et ajouter "$" à la fin, pour dire qu'il s'agit du point final et pas du premier point rencontré :
preg_replace("/^Equipé(.+)\.$/","Equipé <font color=#1eff00>$1</font>.",$v);
J'ai également déplacé les balises <font> du résultat, je ne sais pas si c'est ce que tu veux, mais si tu voulais tout mettre en vert, l'expression régulière n'était pas utile ;)

Posté : 24 avr. 2006, 00:33
par Mouet
Grand Grand merci pour la rapidié et la qualité!


Le problème est que le Equipé... . se trouve dans un texte ;-) donc je pense que c'est nécessaire 8)

Posté : 24 avr. 2006, 00:45
par Cyrano
Tiens, essaye comme ça :
<?php
$v = "Equipé des meilleurs composants. Et à un prix défiant toute concurrence.";
echo("<p>". $v ."</p>");
$masque = "#(Equipé[a-zA-Z ]*\.)#";
$remplacement = "<span style=\"color=#1eff00\">$1</span>";
$v = preg_replace($masque, $remplacement,$v);
echo("<p>". $v ."</p>");
?>
Ça devrait t'afficher ceci :
Equipé des meilleurs composants. Et à un prix défiant toute concurrence.
Equipé des meilleurs composants. Et à un prix défiant toute concurrence.
Est-ce que c'est bien ce que tu veux faire ?

Posté : 24 avr. 2006, 09:48
par Ryle
Si ta chaine se trouve au milieu d'un texte, tu peux utiliser la même chose sans les "^$" :)

L'expression de cyrano fonctionne également, et c'est effectivement plus propre et plus lisible de sortir le masque. Par contre si tu utilises les styles pour mettre en couleur, il y a une ch'tite erreur, c'est un " : " qu'il faut utiliser dans l'attribut à la place du " = "

Code : Tout sélectionner

<span style="color:#1eff00;">