Petit problème de regexp

Petit problème de regexp - PHP - Programmation

Marsh Posté le 17-12-2011 à 14:48:54    

Bonjour
 
J'ai la chaine suivante :

Code :
  1. abcd(1234) efgh()

et j'aimerais extraire les deux éléments abcd et 1234, ceux-ci se définissant comme :
- pour abcd : ce qui est avant (1234)
- pour 1234 : nombre entre deux parenthèses
 
j'essaie la regexp suivante :  

Code :
  1. preg_match("(\([0-9]*\))", $str, $regs);

qui me retourne bien le 1234 mais je n'arrive pas à récupérer le abcd égatlement avec la regexp
 
Pourriez vous m'aider ?
 
Merci d'avance
 

Reply

Marsh Posté le 17-12-2011 à 14:48:54   

Reply

Marsh Posté le 17-12-2011 à 17:42:12    

Sous quelle forme se présente abcd ? Toujours une série de lettres minuscules ? Si c'est le cas :

/([a-z]+)\(([0-9]+)\)/


Message édité par FlorentG le 17-12-2011 à 17:42:44
Reply

Marsh Posté le 17-12-2011 à 18:07:07    

nan, dans mon cas réel, c'est une URL, mais j'ai mis (.*) et ca marche parfaitement

 

Merci !


Message édité par nisalon_caje le 17-12-2011 à 18:17:09

---------------
http://nisalon.labrute.com/
Reply

Marsh Posté le 17-12-2011 à 18:18:32    

Essaye alors avec

/([^\(]+)\(([0-9]+)\)/

Reply

Marsh Posté le 17-12-2011 à 18:28:18    

Parfait

 

Et maintenant, si je veux faire en sorte de trouver les variables php dans un document ?
Je tente /(\$[A-Za-z0-9]+)/ mais sans succès


Message édité par nisalon_caje le 17-12-2011 à 18:29:06

---------------
http://nisalon.labrute.com/
Reply

Marsh Posté le 17-12-2011 à 18:31:07    

Ça devrait pourtant fonctionner, tu match sur $, suivit de bidules genre lettres et chiffres. Rajoute aussi _, qui est valide dans un nom de variable. Et on ne peut commencer par un chiffre :

/(\$[A-Za-z_][A-Za-z0-9_]+)/

Reply

Marsh Posté le 17-12-2011 à 18:35:12    

Etrange, cela ne fonctionne pas
 
Voici mon code complet :

Code :
  1. <?php
  2. $str = '$ab452cd=$efg+2';
  3. preg_match("/(\$[A-Za-z_][A-Za-z0-9_]+)/", $str, $regs);
  4. var_dump($regs);
  5. ?>


---------------
http://nisalon.labrute.com/
Reply

Marsh Posté le 17-12-2011 à 18:50:27    

T'as mis ta regexp entre double-quotes (" " ). Et il se trouve du coup que le  \$ se transforme en $ (les double-quotes forcent le parsing de la string pour remplacer les potentielles variables). Il faut doubler le \ :

preg_match("/(\\$[A-Za-z_][A-Za-z0-9_]+)/", $str, $regs);


Ou plus simplement utiliser des simple-quotes :
 

preg_match('/(\$[A-Za-z_][A-Za-z0-9_]+)/', $str, $regs);


Reply

Marsh Posté le 17-12-2011 à 18:56:57    

merci ;)


---------------
http://nisalon.labrute.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed