[php] aide pr expression réguliére->marche pô

blbg Messages postés 302 Date d'inscription   Statut Membre Dernière intervention   -  
blbg Messages postés 302 Date d'inscription   Statut Membre Dernière intervention   -
bonjour, ...

voilà mon petit probléme :

j'ai une chaine (aprés l'avoir lue ds un fichier texte) contenant des instructions php d'affectation!

leur format est donc :
$nomVar = 'valeur_var'; 

& je voudrais récupérer le nom & la valeur de la variable, ...
j'ai donc utilisé les expression réguliére, j'ai suivi le cour ccm, mais ça marche pas, ... ça ne me retourne rien ...

voilà ce que j'utilise :
echo '<b>'.$buffer.'</b><br>'; // buffer est la chaine de départ

eregi("^\$([:alnum:]*) *= *'$",$buffer,$nomVar);
// commence par $
// suite de caractére alphanum
// 0 ou 1 espace (j'ai mis * pr que même s'il y a plus qu'un espace ça marche)
// un =
// la encore 0 ou 1 espace 
// fini par   '  qui marque le début de la valeur

echo $nomVar[0].'<br>'.$nomVar[1].'<br>'.$nomVar[2]; //affiche pour test

eregi("^ *= *'(.*)[^\\]';$",$buffer,$valVar);
//commence par les espace 
// puis le = 
// encore les espace 
// ' pr la chaine
// une suite de caractére
// puis fini par '; mais il ne doit pas avoir de \ avant le ';
echo '<br>'.$valVar[0].'<br>'.$valVar[1].'<br>'.$valVar[2];//affiche pour test


& qd je teste ça, ... ça m'affiche le $buffer, ainsi que les <br>
mais je ne récupére rien ...

& je ne vois pas où ça bloc, ...
car si on détaille bien mon buffer, ... ça corespond, ... non ??

& j'ai aussi voulu remplacer les ' par ['|"] , mais ça m'affiche une erreur, car il ferme le chaine avec le " & je ne sais pas si je met \" si l'expression va bien être interpréter ...

dc si qqun peu m'aiguiller ... merci

1 réponse

blbg Messages postés 302 Date d'inscription   Statut Membre Dernière intervention   10
 
j'ai trouvé, ...

enfin, j'ai contourné le probléme, ...

	$dn = strpos($buffer,"$");
	$fn = strpos(substr($buffer,$dn)," ");
	$nomVar = substr($buffer,$dn+1,$fn-$dn-1);

	$buffer=substr($buffer,$fn);
	$dv = strpos($buffer,"'");
	$df = strrpos($buffer,"'");
	$valVar = substr($buffer,$dv+1,$df-$dv-1);

$nomVar contient bien le nom de la variable,
et $valVar sa valeur, ...

voilà, ... il me rete plus qu'à recreer la variable
0