[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

2 réponses

  1. 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
  2. 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