Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2006, 22h37   #1
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 63
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 63
Points : 19
Points : 19
Par défaut Problème avec preg_replace

Bonsoir à tous !

Je suis en train de coder une fonction qui permet de faire des QUOTE de message.
Pour un QUOTE d'un message simple ca marche bien.

MAIS si je veux faire un QUOTE d'un QUOTE :/ ca marche plus bien ^^
Ca prend le premier QUOTE et le premier /QUOTE et hop la basta.

Code :
$message = preg_replace ("/\[QUOTE\](.+)\[\/QUOTE\]/Uis","<CENTER><TABLE style='border: 1px dashed #CCCCCC;' bgcolor='#ffffff'  WIDTH='90%'><TR bgcolor='#ffffff'><TD class='Style20'>\\1</TD></TR></TABLE></CENTER>",$message);
Comment faire pour que quand il y a plusieur QUOTE dans $message cela s'applique à tous les couples ?

Merci de votre aide !
Vinzius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2006, 22h42   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Une petite question : entre tes balises quote il y a un texte ou pas ?
Car si c'est pas le cas tu pourrais faire quelque chose de ce genre :
Code :
(\[QUOTE\])+(.*)(\[/QUOTE\])+
Peut etre que je me trompe mais bon j'aurai tenté
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2006, 22h47   #3
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 63
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 63
Points : 19
Points : 19
Oui il y a du texte entre les balises quote

Mais merci quand même de ton aide !

Edit - ton msg c'était bien pour si il n'y avait pas de texte ? non je vérifis je suis fatigué ce soir ^^
Vinzius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2006, 22h54   #4
Membre Expert
 
Avatar de Nemesys
 
Étudiant
Inscription : mars 2006
Messages : 1 910
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 1 910
Points : 2 086
Points : 2 086
Une réponse dans le manuel peut etre :

http://fr.php.net/manual/fr/function.preg-replace.php

Ils en parlent ! Cherche
Nemesys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2006, 22h56   #5
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 63
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 63
Points : 19
Points : 19
Merci je vais aller lire ca
Vinzius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2006, 23h03   #6
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 63
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 63
Points : 19
Points : 19
Bon ... je suis pas doué j'ai pas réussie à trouver ma réponse

Help svp
Vinzius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2006, 23h10   #7
Membre Expert
 
Avatar de Nemesys
 
Étudiant
Inscription : mars 2006
Messages : 1 910
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 1 910
Points : 2 086
Points : 2 086
Citation:
if you use preg_replace with the \e modifier and pass some captured text to a function you will notice the following behaviour:

if you pass the replacement parameter (\1) in double quotes, all single quotes in the string are getting escaped, if you pass the parameter in single quotes, all double quotes are getting escaped.

as an example look at the following code:

function showText($info, $in) {
echo $info.': '.$in."\n";
}

$pattern = '/#(.*)#/e';
$subject = '#\'quote\' - "double quote" - \\backslash\\#';

preg_replace($pattern, 'showText(\'test1.1\', \'\1\')', $subject);
preg_replace($pattern, 'showText(\'test1.2\', "\1")', $subject);
preg_replace($pattern, "showText('test1.3', '\\1')", $subject);
preg_replace($pattern, "showText('test1.4', \"\\1\")", $subject);

// output:
// test1.1: 'quote' - \"double quote\" - \backslash\
// test1.2: \'quote\' - "double quote" - \backslash\
// test1.3: 'quote' - \"double quote\" - \backslash\
// test1.4: \'quote\' - "double quote" - \backslash\

consequences: you might have to take care about the extra escaped single or double quotes in the function you are calling. Unfortunatly this depends on the way you add the capture text into the function call - so there is no way of knowing within the function what to strip away...
Moi je vois ca qui se rapproche, je sais pas si ca peut t'aider..
Nemesys est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h37.


 
 
 
 
Partenaires

Hébergement Web