Hi I have several lines of code like these:
$row[number];
$row[user];
and I would like to transform them like this:
$row['number'];
$row['user'];
On notepad with Find and Replace using regular expression to find them I used this expression:
\$row\[.*?\]
You know how I could replace the same word by adding: ' ' to the extremes?
Thanks
CodePudding user response:
You need to look for non quotes in the index notations so replace .*? (which essentially says "anything") with [^'] ?. You also can take the PHP definition for a valid variable and us that prior to the index notation to be more exact:
([$][a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)[[]([^'] ?)[\]]
you then replace with:
$1['$2']
https://regex101.com/r/GMrMEi/1/
If you wanted to go a step forward you could use a negative lookahead to exclude integers ((?!\d )) indices (because those are valid in PHP):
([$][a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)[[](?!\d )([^'] ?)[\]]
https://regex101.com/r/bU2sRg/1/
If it is only ever $row you can do:
[$]row[[]([^'] ?)[\]]
and
$row['$1']
