preg_replace()

preg_replace() - PHP - Programmation

Marsh Posté le 15-02-2007 à 20:16:51    

bonjour,
 
j'utilise preg_replace(). je veux faire une recherche du genre:
 
preg_replace('#(\s*(To: )\s+.+\n)(To: |$)#isU','en rouge',$texte);
 
ce que j'essaie de faire, est de ne pas inclure dans ma recherche le dernier To:, mais je veux que ma recherche porte sur le To: jusqu'au To:
 
en d'autre mot le dernier To:, ne sera pas en rouge.....
 
J'espere que je suis clair

Reply

Marsh Posté le 15-02-2007 à 20:16:51   

Reply

Marsh Posté le 15-02-2007 à 21:15:38    

Code :
  1. preg_replace('#(\s*(To: )\s+.+\n)(To: |$)#isU','<span class="rouge">$1</span>$3',$texte);


 
Ca le fait pas?

Reply

Marsh Posté le 15-02-2007 à 21:33:52    

Pour etre clair il faudrait que tu nous donnes la donnée de départ sous forme de vrais exemples, puis, ce que tu souhaites a l'arrivée !
 
Ca ne sert pas a grand chose de nous donner ta regex sachant que si tu viens poster ici c'est que, précisément, elle ne fonctionne pas !

Reply

Marsh Posté le 15-02-2007 à 21:45:10    

Voici un exemple:
To: blablabla blabla blablabla blablablablabla blabla
blablabla blablavblablabla blablablablabla blabla
blablabla blablablablabla blabla T0:
To: blablabla blabla blablabla blablablablabla blabla
blablabla blablavblablabla blablablablabla blabla
blablabla blablablablabla blabla T0:
 
 
en utilisant le regex du départ(voir plus haut) je veux mettre en rouge(c'est un exemple) tout ce qui est entre les 2 To:
 
voila pour la donnée de départ

Reply

Marsh Posté le 15-02-2007 à 21:51:50    

En utilisant les parenthèses dans la regex et les références dans le pattern ça marche pas?
(genre ce que j'ai mis plus haut)


Message édité par Maxaks le 15-02-2007 à 21:52:10
Reply

Marsh Posté le 15-02-2007 à 22:08:03    

ce que tu as mis plus haut, c'est la même chose que moi j'ai encore plus haut non??

Reply

Marsh Posté le 15-02-2007 à 22:09:37    

en faite moi j'utilise plustot ceci
preg_replace_callback('#(\s*(To: )\s+.+\n+)(\s*(To:|$))#isU','appel_fonction',$temp);


Message édité par dirty_harry le 15-02-2007 à 22:10:00
Reply

Marsh Posté le 15-02-2007 à 22:15:58    

donc, moi ce que je veux ou ne veux pas plutôt....c'est de ne pas envoyer le dernier To: à ma fonction.......mais tout ce qui veint avant à partir du premier To:
 
voila

Reply

Marsh Posté le 15-02-2007 à 22:43:48    

ok ca fonctionne j'ai rajouté un autre preg_replace() et j'ai remplacer le To; par un "caractere To:" et dans mon 2ieme preg_replace() je coupe a caractere.
 
merci

Reply

Marsh Posté le 16-02-2007 à 09:35:18    

euhhh par défaut les pcre étant greedy, il suffisait de faire:

Code :
  1. preg_replace('#(TO.*)(TO:)#is','<span class="rouge">$1</span>$2',$texte);


:o


Message édité par anapajari le 16-02-2007 à 09:35:25
Reply

Sujets relatifs:

Leave a Replay

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