aide REGEX

aide REGEX - PHP - Programmation

Marsh Posté le 13-04-2005 à 17:02:40    

petite question en regex.. (parceque j'ai pas encore bien capté comment ça marche)
 
je voudrais faire un rechercher remplacer dans tout mon code de  
 
$_GET['xxx']
 
en  
 
$xxx
 
 
... je suppose qu'il faut faire un masque... mais je sais pas trop comment m'y prendre ! :-/
 
j'ai commencé par  
 
$_GET\w*(\w*)']\w*
 
... mais je crois pas que ça marche !... normal ! j'ai encore rien capté ! lol

Reply

Marsh Posté le 13-04-2005 à 17:02:40   

Reply

Marsh Posté le 13-04-2005 à 17:03:17    

Pourquoi veut-tu faire ça ? Sinon Edition\Remplacer, c'est pareil

Reply

Marsh Posté le 13-04-2005 à 17:07:41    

bah justement.. ya une option "utiliser les expressions régulieres"
 
... et là je veux changer que les $_GET en $... et les '] en "rien"... pour la premiere option c facile.. pour la deuxieme il va me changer tous les tableaux et sessions!!!

Reply

Marsh Posté le 13-04-2005 à 17:08:29    

\$_GET\['([^']*)'\]


 
EDIT: dans replace tu met

$\1


Message édité par soju le 13-04-2005 à 17:09:14
Reply

Marsh Posté le 13-04-2005 à 17:08:57    

freed102 a écrit :

petite question en regex.. (parceque j'ai pas encore bien capté comment ça marche)
 
je voudrais faire un rechercher remplacer dans tout mon code de  
 
$_GET['xxx']
 
en  
 
$xxx
 
 
... je suppose qu'il faut faire un masque... mais je sais pas trop comment m'y prendre ! :-/
 
j'ai commencé par  
 
$_GET\w*(\w*)']\w*
 
... mais je crois pas que ça marche !... normal ! j'ai encore rien capté ! lol


 
 

Code :
  1. preg_replace("/^\$_GET\[\"/", "\$", $ton_texte) ;
  2. preg_replace("/\"\]$", "", $ton_texte) ;


Message édité par GaSPaRD77 le 13-04-2005 à 17:10:57
Reply

Marsh Posté le 13-04-2005 à 17:10:45    

GaSPaRD77 a écrit :

Code :
  1. preg_replace("/\"\]$", $ton_texte) ;



vaut mieux eviter, ca va remplacer tous les '] et ils ne font pas forcement partie d'un $_GET['xxx']

Reply

Marsh Posté le 13-04-2005 à 17:11:23    

Ouais mais il le fait que pour le $_GET["..."]

Reply

Marsh Posté le 13-04-2005 à 17:13:59    

soju a écrit :

\$_GET\['([^']*)'\]


 
EDIT: dans replace tu met

$\1



 
yess !! thx !!! :jap: :jap: :jap:
 
c exactement ce que je voulais faire !!!
 
sauf que dans le soft que j'utilise (celui que tout le monde deteste) dans le champ replace c'est : $$1
 

Citation :


Remarque : Dans la zone de texte Rechercher, faites référence au groupe entre parenthèses mentionné plus tôt dans l’expression régulière en indiquant \1, \2, \3 etc. au lieu de $1, $2, $3.
 
Par exemple, la recherche de (\d+)\/(\d+)\/(\d+) et le remplacement par $2/$1/$3 échangent le jour et le mois dans une date séparée par des barres obliques permettant ainsi la conversion entre les dates de style américain et les dates de style européen.
 


 
c quand même DEMENT les regex !!! faut vraiment que je maitrise ce truc !


Message édité par freed102 le 13-04-2005 à 17:17:34
Reply

Marsh Posté le 13-04-2005 à 17:15:44    

et hop !! en deux secondes mon code est corrigé !! c top ! (à la main j'y aurais passé 3 jours !!!) :lol:

Reply

Marsh Posté le 13-04-2005 à 17:19:24    

freed102 a écrit :

et hop !! en deux secondes mon code est corrigé !! c top ! (à la main j'y aurais passé 3 jours !!!) :lol:

hehe, je m'en sers pratiquement tous les jours des regex dans mon editeur, c'est clair que c'est un outil qu'il faut maitriser

Reply

Marsh Posté le 13-04-2005 à 17:19:24   

Reply

Marsh Posté le 13-04-2005 à 17:20:22    

surtout que ça a l'air d'etre "universel"

Reply

Marsh Posté le 15-04-2005 à 11:20:28    

Sinon, sans regex mais pour faire la même chose :
 

Code :
  1. if(is_array($_GET))
  2. foreach ( $_GET as $gkey => $gval){
  3. $$gkey = urldecode($gval);
  4. }


 
 :jap:


Message édité par Snoopy71 le 15-04-2005 à 11:20:51
Reply

Marsh Posté le 15-04-2005 à 11:22:57    

freed102 a écrit :

surtout que ça a l'air d'etre "universel"


non, il y a 2 ou 3 implémentations légèrement différentes des regexps (compare une regexp d'un prog PHP et une regexp d'un prog Python, tu vas vite comprendre)
 
Résummé des principaux standards de regexps
Le standard de base est POSIX, la version la plus puissante et riche ce sont les regexps Perl (en partie reprises par Python, qui implémente en bonus du symbolic grouping, ce qui rox violement [:thierry3]
 
edit: Python Regex Howto


Message édité par masklinn le 15-04-2005 à 11:31:21

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-04-2005 à 11:49:35    

ouai c super compliqué les regex ! :lol: ! faut que je m'y remette serieusement !

Reply

Marsh Posté le 15-04-2005 à 11:53:29    

C'est pas spécialement compliqué dans le principe, mais c'est complètment imbitable quand tu les lis [:sisicaivrai]
 
Si tu comptes faire des regexp Perl/Python, va voir du côté de Kodos, c'est un débugger Python.re très très bien fait (il est probablement utilisable avec les autres versions des res au prix d'un petit travail de traduction)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-04-2005 à 12:52:58    

bah moi les regex je vais les utiliser avec PHP/MySQL, actionscript (peut etre), javascript... donc je sais pas lesquels me seront nécéssaires... celles de Perl non ?

Reply

Marsh Posté le 15-04-2005 à 14:20:46    

nah, il me semble que PHP et JS utilisent des regexp POSIX, beaucoup moins complexes et complètes que celles de Perl ou Python (celles de Python sont issues de celles de Perl, à l'origine Python avait un module "regexp" en Posix mais il a été foutu à la poubelle avec la sortie du module "re" Perl-style)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-04-2005 à 15:08:59    

youpi ! j'ai fait ma premiere regex !
 
\$([^_SESSION*][^_POST*][^_GET*]\w*)
 
en traduction : trouve toutes les mots qui commencent par $, en evitant les $_POST $_GET et $_SESSION
 
... ça bien ça ?

Reply

Marsh Posté le 15-04-2005 à 15:18:33    

... et si je veux qu'il evite aussi les : $var['array']?

Reply

Sujets relatifs:

Leave a Replay

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