Expression regulière

Bonjour,

je souhaite extraire le contenu qui se trouve entre deux parenthèse par une expression regulière

voilà j'ai une chaine qui peut s'ecrire de deux façon

$chaine_1 ="fonction nom_fonction($par1, $par=null, $par=null) ";
$chaine_2 ="fonction nom_fonction() ";
je souhaite avoir dans un tableau :

nom_fonction
$par1
$par2,
$par3

Merci d'avance
Configuration: Windows XP
Firefox 3.0.5

12 réponses

  1. Contributeur
    salut,

    et ?…

    <edit>

    et qu'as-tu fait jusqu'à présent, quel est ton problème ?

    </edit>
    1. Salut,

      en effet ma question est la suivante
      j'ai besoin d'une expression régulier en php qui permet d'extraire de la chaine $x le contenu $y
      tel que

      $x = "fonction nom_fonction($par1, $par=null, $par=null) ";

      $y = nom_fonction, $par1, $par2, $par3 ;

      Merci d'avance
      1. Contributeur
        alors, de tête et en fermant les yeux…
        `^function\s[.*]([.*])$`

        comme ça tu devrais récupérer le nom de la fonction et la chaine des variables que tu peux après éclater avec split().
        mais je ne suis pas sûr pour les parenthèses.

        essaie déjà ça je regarde pour les parenthèses et extraire aussi les variables.

        tu veux juste disséquer la chaîne, tu ne veux pas faire de réflexion ?
        1. Contributeur
          les parenthèses sont bien des métacaractères, le $ aussi.

          essaie :
          `^function\s[.+]\(\$[.+],\s\$[.+],\s\$[.+])$`
          1. Merci Mathieu, mais c'est pas ça exactement ce que je souhaite
            je souhaite me débarrasser des deux parenthèse et comme résultat c'est soit un tableau
            ou bien une chaine dont les éléments soit séparé par une virgule.

            Input = "fonction nom_fonction($par1, $par=null, $par=null) ";

            output = "nom_fonction, $par1, $par2, $par3 ";

            Cordialement
            1. Contributeur
              c'est bien ce que j'avais compris…

              tu l'utilises comme ton expression régulière ?
              en utilisant preg_match() et l'expression tu devrais avoir un tableau avec les infos.

              + preg_match()
              1. Salut,

                Afin de tester votre solution, voila un exemple que j'ai fait
                et malheuresement ça marchait pas

                $function_elements = array() ;
                $chaine = 'function Param($pl_idelm,$mandt = false,$default =
                null,$iname = null)';
                preg_match('^function*[.+]($[.+],$[.+],$[.+])$', $chaine, $function_elements);
                foreach($function_elements as $key => $value)
                {

                echo $value ;
                }

                Bien Cordialement
                1. Contributeur
                  essaie juste :

                  preg_match('^function [.+]([.*])$', $chaine, $function_elements); 
                  print_r($function_elements)

                  1. Salut,

                    je reçois ce message d'erreur.

                    Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\Program Files...........

                    Merci
                    1. Contributeur
                      oups…

                      il lui fait ses délimiteurs à lui…
                      moi j'utilise les accents graves mais je les avais oublié.
                      preg_match('`^function [.+]([.*])$`', $chaine, $function_elements); 
                      print_r($function_elements)