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

Fermé
hans88 Messages postés 89 Date d'inscription jeudi 14 août 2008 Statut Membre Dernière intervention 6 mai 2013 - 8 juil. 2010 à 11:35
hans88 Messages postés 89 Date d'inscription jeudi 14 août 2008 Statut Membre Dernière intervention 6 mai 2013 - 8 juil. 2010 à 16:43
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

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 89 Date d'inscription jeudi 14 août 2008 Statut Membre Dernière intervention 6 mai 2013 5
Modifié par hans88 le 8/07/2010 à 16:48
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