Récupération de texte entre crochets sous certaines conditions
Bonjour,
Mon niveau en regex est un peu nooby donc je vous sollicite votre aide. Le but est de passer une (très grosse) application sous PHP4 vers PHP5, (oui ils ont laissé traîné la chose).
en gros au lieu d'écrire : $VAR['ffff'] ils ont écrit : $VAR[ffff] (ffff n'étant évidement pas une constante)
Le but est de faire un REGEX pour effectuer ce changement (plus de 450000 changements à opérer, en comptant certains que je ne dois évidement pas prendre)
Tous est mélangé js / html etc...
Le seul moyen est de détecter [VAR] qui est précédé par une variable php avec le $ (en gros détecter un tableau php)
Voilà ou j'en suis :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $file = '
sswhgs
$hhh["wfwf"][dghj] => yes
$hhh[\'cvcv\'][edtyu] => yes
$hhh[dgddsf]["dtyudyt"] => yes
xxdf["ert"][3dgdf5]
[sfg5]
$xxdf[dgdf5] => yes
$hhh[fvsdf]["jft"][sfs] => yes (2times)
';
preg_match_all('#\$[a-zA-Z_]{1}[a-zA-Z0-9_]*(.+)\[([a-zA-Z_]{1}[a-zA-Z0-9_]+)\]#U',
$file,
$out, PREG_PATTERN_ORDER);
print_r($out); |
ce qui donne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
Array
(
[0] => Array
(
[0] => $hhh["wfwf"][dghj]
[1] => $hhh[\'cvcv\'][edtyu]
[2] => $hhh[dgddsf]
[3] => $xxdf[dgdf5]
[4] => $hhh[fvsdf]
)
[1] => Array
(
[0] => hh["wfwf"]
[1] => hh[\'cvcv\']
[2] => hh
[3] => xdf
[4] => hh
)
[2] => Array
(
[0] => dghj
[1] => edtyu
[2] => dgddsf
[3] => dgdf5
[4] => fvsdf
)
) |
le but étant d'avoir en sortie :
Code:
1 2 3 4 5 6 7 8 9
|
sswhgs
$hhh["wfwf"]['dghj'] => yes
$hhh['cvcv']['edtyu'] => yes
$hhh['dgddsf']["dtyudyt"] => yes
xxdf["ert"][3dgdf5]
[sfg5]
$xxdf['dgdf5'] => yes
$hhh['fvsdf']["jft"]['sfs'] => yes (2times) |
Je sais que je ne suis pas très loin mais il manque la solution quand il y en plusieurs encastrer les uns dans les autres ou à la suite.