|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Inscription : avril 2002 Messages : 84 ![]() |
Bonjour,
je recherche le moyen de capturer un morceau de chaine qui ne soit pas entre '' ou entre () par exemple: Code :
doc je fais: Code :
Merci de votre aide |
||||
|
|
00
|
|
|
#2 | ||
|
Membre expérimenté
![]() Inscription : septembre 2006 Messages : 685 ![]() |
Salut,
Peut-être avec preg_split Code PHP :
|
||
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2002 Messages : 84 ![]() |
Merci pour ta réponse,
en fait je doit capturer le texte premier SELECT jusqu'au FROM sans parenthèses mais en gardant le contenu entre parenthèse par exemple: le regex doit me retourner * Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre expérimenté
![]() Inscription : septembre 2006 Messages : 685 ![]() |
Dans ce cas, oui alors, preg_match est suffisant.
Code php :
Il ne te retournera que la 1ère occurence trouvée, et comme le 1er SELECT n'est jamais entre parenthèse, un masque simple est suffisant. |
||
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2002 Messages : 84 ![]() |
merci de la réponse mais il y a une autre fom de string
Code :
Merci de ton aide |
||
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
J'arrive pas à comprendre ton histoire de parenthèses de from etc. En gros tu veux capturer quoi ? La liste des colonnes de ta requete ? Les noms des colonnes (alias plutot que (select ...)) ?
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2002 Messages : 84 ![]() |
En gros, je veux capturer tout ce qui se trouve entre SELECT et FROM, dont ni le SELECT ni le FROM ne soient pas entre parenthèse, ni entre quotes
Merci de ton aide |
|
|
00
|
|
|
#8 | ||
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
Et dans ce cas là, il te retourne quoi ?
Code :
|
||
|
|
00
|
|
|
#9 | |
|
Nouveau Membre du Club
![]() Inscription : avril 2002 Messages : 84 ![]() |
Merci de votre aide
cela me retourne Citation:
|
|
|
|
00
|
|
|
#10 | |
|
Nouveau Membre du Club
![]() Inscription : avril 2002 Messages : 84 ![]() |
Je pense avoir trouver une solution, je vais faire un remplacement des mots entre quotes ou parenthèses afin de palier au problème
euh, quelqu'un saurait comment remplacer un mot entre parenthèse par exemple Citation:
Merci |
|
|
|
00
|
|
|
#11 | ||
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
j'imagine que tu veux pouvoir chercher n'importe quoi comme de WHERE à GROUP BY. à mon avis, le méta-caractère le plus puissant est | car il offre la possibilité de mettre des patterns entier en concurrence entre eux. dans ce cas-ci, il faut passer par dessus tout ce qui est entre parenthèses et entre quote SQL qui sont '` si ma mémoire est bonne. et tout le reste est bon... donc on peut opposer ces 3 patterns.
en utilisant l'option U (ungreedy) sur toute l'expression, alors on peut dire que le contenu entre parenthèses est détecté par le pattern \(.+\) et dans la même logique que le contenu entre quote SQL '` est détecté par le pattern ['`].+['`] avec une nuance... et que le troisième pattern est tout simplement le point. faire un masque de ces 3 patterns et capturer en \\1 dès le début pour éliminer par exemple le WHERE qui serait entre parenthèses ou quote avant le WHERE voulu. ensuite une simple référence à ce masque pour reproduire ces patterns en | comme une sous routine entre par exemple le WHERE et le GROUP BY. Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com