Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pattern - preg_match_all

Sujet résolu
    26 novembre 2024 à 12:59:13

    Bonjour,

    Je cherche à boucler une chaine de texte afin de retrouve partout ou j'ai quelque chose qui commence par 

    $BLOCK_

     et fini par un

      $

    Donc, dans ma chaine de caratere j'ai par exemple

    Bonjour, $BLOCK_test$ bla blas

    Je cherche donc à retrouver le mot test ou $BLOCK_test$ (il peux y avoir plusieurs balise dans le texte exemple $BLOCK_test$ $BLOCK_test1$ etc)

    preg_match_all(
                    '~$BLOCK_',
                    chaine_de_texte,
                    $matches,
                    PREG_PATTERN_ORDER
                );

    Merci d'avance pour votre aide :)

    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2024 à 14:12:06

      Vous voulez écrire des regexp mais vous ne les comprenez même pas :

      • Il manque le caractère délimiteur
      • Le $ s'échappe parce que c'est un métacaractère qui signifie la fin de la chaîne donc elle va être dure à trouver en plein milieu d'un motif

      Il y a une incohérence : les balises br font partie du motif ou c'est à cause de l'éditeur ?

      ~\$BLOCK_[[:alpha:]]+\$~ ?

      -
      Edité par julp 26 novembre 2024 à 14:19:07

      • Partager sur Facebook
      • Partager sur Twitter
        26 novembre 2024 à 15:27:45

        hello, merci pour ta réponse, le br a été ajouté par l'éditeur

        Voici le bout de code :

        		$texte = 'bonjour, $BLOCK_quefamille19$ eee ';
        		
        		echo $texte;
        		if (strpos($texte, "BLOCK_quefamille") !== false){
        			
        			echo "oui";
        			preg_match_all(
        				'~\$BLOCK_quefamille[[:alpha:]]+\$~',
        				$texte,
        				$matches,
        				PREG_PATTERN_ORDER
        			);
        			
        			echo "<pre>";
        			var_dump($matches);
        			echo "</pre>";
        			
        			
        		}

        le var_dump me retourne bien 1 élément mais vide...

        Une idée pour avoir BLOCK_quefamille19$ ou le 19 ?

        Merci beaucoup

        • Partager sur Facebook
        • Partager sur Twitter
          26 novembre 2024 à 15:33:39

          Autant pour moi, j'avais loupé l'exemple $BLOCK_test1$ où le "marqueur" contient des chiffres, j'avais supposé (que) des lettres => remplace [[:alpha:]] par [[:alnum:]]

          -
          Edité par julp 26 novembre 2024 à 15:33:55

          • Partager sur Facebook
          • Partager sur Twitter
            26 novembre 2024 à 16:39:09

            super ca va bien me dépanner, merci beaucoup :)
            • Partager sur Facebook
            • Partager sur Twitter

            Pattern - preg_match_all

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown