Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer ce qu'on capture dans regex

    24 juin 2006 à 17:45:03

    Salut
    Pour capturer quelque chose dans une regex, on met des (), mais apres, si je veux recuperer ce que j'ai capturer dans une variable, comment faire ?
    Merci ;)

    PS : ne me dites pas echo $1; sa marche pas et c'est bien normal ^^
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2006 à 17:53:36

      <?
      $variable = preg_replace('!<gras>(.+)</gras>!', '<strong>$1</strong>', $message);
      echo $message;
      ?>
      • Partager sur Facebook
      • Partager sur Twitter

      Web Developer

        24 juin 2006 à 17:59:40

        Utilise le 3ème argument de preg_match() ou preg_match_all() ;)

        Exemple :
        <?php

        $var = 'Oui, "capilliculture", du latin "capillaris"... "capilla", le poil, et... et "ris" on s’en fout ! :p'; // (Desproges)

        preg_match_all('`"([^"]+)"`', $var, $matches); // on récupère les mots entre guillemets dans $matches
        // $matches[0] est un sous-array qui contient les chaînes "correspondant" à "$0", $matches[1] à "$1"...

        print_r($matches);

        // exemple d'utilisation de $matches :
        foreach ($matches[1] as $m1) {
                echo "\n" , $m1;
        }

        ?>

        Rendu :
        Array
        (
            [0] => Array
                (
                    [0] => "capilliculture"
                    [1] => "capillaris"
                    [2] => "capilla"
                    [3] => "ris"
                )

            [1] => Array
                (
                    [0] => capilliculture
                    [1] => capillaris
                    [2] => capilla
                    [3] => ris
                )

        )

        capilliculture
        capillaris
        capilla
        ris


        preg_match() avec un 3ème argument marche pareil mais ne prendra que la première occurence satisfaisant le masque :)
        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2006 à 18:01:16

          ta pas plus simple je comprend rien

          c'est bon j'ai un peu compris, mais jle veut pas dans un array
          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2006 à 18:06:57

            Si j'ai plus simple : preg_match() :p

            <?php

            $var = 'Oui, "capilliculture", du latin "capillaris"... "capilla", le poil, et... et "ris" on s’en fout ! :p'; // (Desproges)

            preg_match('`"([^"]+)"`', $var, $match); // on récupère juste le premier mot entre guillemets dans $match
            // $match[0] est la première chaîne "correspondant" à "$0", $match[1] à "$1"...

            print_r($match);

            // exemple d'utilisation de $match :
            echo "\n" , '$match[1] contient : ' , $match[1];

            ?>

            Résultat :
            Array
            (
                [0] => "capilliculture"
                [1] => capilliculture
            )

            $match[1] contient : capilliculture

            Donc la variable qui t'intéresse est $match[1] (ici j'en ai fait un echo directement)


            Et si tu veux encore plus simple... pas possible :-°


            PS : quand on est bien élevé on dit s'il te plaît ^^
            • Partager sur Facebook
            • Partager sur Twitter

            Récupérer ce qu'on capture dans regex

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown