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 25/04/2007, 12h27   #1
Membre du Club
 
Inscription : septembre 2005
Messages : 95
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 95
Points : 42
Points : 42
Par défaut expression régulière pour remplacer des balises

Bonjour à Tous,

Je cherche à faire un remplacement de balise par un tableau.

mes balises sont de la forme {#nomdemabalise}

voila en bref, ce que je fait :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
$aTab["test1"]="Toto";
$aTab["test2"]="Tata";
 
$sLigne = "ligne de test : {#test1} et {#test2}.";
 
$sLigne = preg_replace('#{\#(.*)}#isU', $aTab["$1"], $sLigne);
 
echo $sLigne;
// ce qui affiche : ligne de test : et .
// je voudrais : ligne de test Toto et Tata.
Je pense que je m'y prend mal. Quelqu'un peut-il m'aider ?

Merci d'avance , A+
oceanbigone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 13h27   #2
Membre actif
 
Inscription : mars 2007
Messages : 171
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 171
Points : 171
Points : 171
Tu peux faire un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
10
 
$pattern[0] = "{#test1}";
$pattern[1] = "{#test2}";
 
$replace[0] = "Toto";
$replace[1] = "Tata";
 
$sLigne = "ligne de test : {#test1} et {#test2}.";
 
$sLigne = preg_replace( $pattern , $replace , $sLigne );
ericduval est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 13h35   #3
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
function replace($match)
{
    return $aTab[$match[1]];
}
 
$aTab["test1"]="Toto";
$aTab["test2"]="Tata";
 
$sLigne = "ligne de test : {#test1} et {#test2}.";
 
$sLigne = preg_replace_callback('`{#(.*)}`isU', 'replace', $sLigne);
 
echo $sLigne;
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 14h16   #4
Membre du Club
 
Inscription : septembre 2005
Messages : 95
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 95
Points : 42
Points : 42
Merci pour vos réponses, c'est presque bon.
Comment passer le tableau en paramètre ?

Dans ton code, aTab n'est pas trouvé dans la fonction, je suis obligé de faire :
Code :
1
2
3
4
5
6
7
8
9
10
 
function areplace($match){
	$aTab["test1"]="Toto";
	$aTab["test2"]="Tata";
             return $aTab[$match[1]];
} 
$sLigne = "ligne de test : {#test1} et {#test2}."; 
$sLigne = preg_replace_callback('`{#(.*)}`isU', 'areplace', $sLigne);
 
echo $sLigne;
sinon, c'est presque ca . Merci
oceanbigone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 12h17   #5
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Pardon j'avais zapper ce détails ^^

Code php :
1
2
3
4
5
function replace($match)
{
    global $aTab;
    return $aTab[$match[1]];
}
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2007, 18h11   #6
Membre du Club
 
Inscription : septembre 2005
Messages : 95
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 95
Points : 42
Points : 42
Merci
oceanbigone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h12.


 
 
 
 
Partenaires

Hébergement Web