[PHP-RegExp] preg_replace(). J'ai un problème

hans88 Messages postés 122 Statut Membre -  
hans88 Messages postés 122 Statut Membre -
Bonjour,

J'ai un chaîne de caractères contenant plusieurs occurrences d'une valeur que je voudrais bien récupérer...

$chaine = "[b]Val1/b blablabla [b]val2/b";
$chaine = preg_replace("/\[b\](.*)\/b\(.*)\[b\](.*)\/b\/", "<strong>$1</strong>$2<strong>$3</strong>", $chaine);

le truc c'est que rien ne se passe comme je le souhaite ! La première parenthèse capturante récupère toute la chaine !

Je ne sais pas si je m'y prend mal avec les RegExp... si c'est le cas, débloquez moi s'il vous plaît, sinon, comment puis-je faire pour traiter chaque parenthèse capturante ?

Merci
A voir également:

2 réponses

Flog78
 
je voit pas trop pourquoi dans ta chaine de départ pour encadrer au debut on a [b] et à la fin on a /b pour encadrer tes mots à mettre en gras mais admettons que c'est ça alors cela donnerai ce code :

$chaine = "blabla [b]Val1/b blablabla [b]val2/b blabla";
$chaine = preg_replace("/\[b\]/","<strong>", $chaine);
$chaine = preg_replace("/\/b/","</strong>", $chaine);
echo $chaine;
0
hans88 Messages postés 122 Statut Membre 6
 
Désolé, j'ai pas relu mon post après l'avoir posté !

c'est pas des /b, mais des "[ / b ]" (sans les espace)
(ccm ne veux pas bien l'afficher même quand j'utilise l'outil code !, je vien de modifier ce post, même chose !)
J'avais pas utilisé l'outil <code > de ccm

$chaine = "[b]Val1[ / b] blablabla [b]val2[ / b ]";   
$chaine = preg_replace("/\[b\](.*)\[ / b \](.*)\[b\](.*)\[ / b \]/", "<strong>$1</strong>$2<strong>$3</strong>", $chaine); 


Mais merci déjà pour ta réponse...
Ce que je veux faire exactement c'est récupérer les différentes valeurs capturées ! Dans mon pattern, il y a trois parenthèses capturantes, mais que je l'exécute, c'est le $1 qui récupère le tout !
0