Expression regulière

Najahp -  
Dalida Messages postés 7114 Statut Contributeur -
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

12 réponses

Dalida Messages postés 7114 Statut Contributeur 923
 
salut,

et ?…

<edit>

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

</edit>
0
najap Messages postés 13 Statut Membre
 
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
0
Dalida Messages postés 7114 Statut Contributeur 923
 
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 ?
0
Dalida Messages postés 7114 Statut Contributeur 923
 
les parenthèses sont bien des métacaractères, le $ aussi.

essaie :
`^function\s[.+]\(\$[.+],\s\$[.+],\s\$[.+])$`
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
najap Messages postés 13 Statut Membre
 
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
0
Dalida Messages postés 7114 Statut Contributeur 923
 
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()
0
najap Messages postés 13 Statut Membre
 
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
0
Dalida Messages postés 7114 Statut Contributeur 923
 
essaie juste :

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

0
najap Messages postés 13 Statut Membre
 
Salut,

je reçois ce message d'erreur.

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

Merci
0
Dalida Messages postés 7114 Statut Contributeur 923
 
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)
0
najap Messages postés 13 Statut Membre
 
Merci bcp :)
0
Dalida Messages postés 7114 Statut Contributeur 923
 
salut,

ça fonctionne ?
0