@@ -109,10 +109,10 @@ protected static function getExpression(string $v, Context $context, int|string
109
109
$ ret [] = $ levels ;
110
110
}
111
111
112
- if (preg_match ( ' / \\ ]/ ' , $ v )) {
112
+ if (str_contains ( $ v , ' ] ' )) {
113
113
preg_match_all (Token::VARNAME_SEARCH , $ v , $ matchedAll );
114
114
} else {
115
- preg_match_all ('/([^ \\ . \\/]+)/ ' , $ v , $ matchedAll );
115
+ preg_match_all ('/([^. \\/]+)/ ' , $ v , $ matchedAll );
116
116
}
117
117
118
118
if ($ v !== '. ' ) {
@@ -239,7 +239,7 @@ protected static function advancedVariable(array $vars, Context $context, string
239
239
continue ;
240
240
}
241
241
242
- if (preg_match ('/^(( \\[([^ \\]]+) \\])|([^=^[" \']+))=(.+)$/ ' , $ var , $ m )) {
242
+ if (preg_match ('/^(( \\[([^ \\]]+) \\])|([^=^ \\ [" \']+))=(.+)$/ ' , $ var , $ m )) {
243
243
$ idx = $ m [3 ] ? $ m [3 ] : $ m [4 ];
244
244
$ var = $ m [5 ];
245
245
// handle foo=(...)
@@ -251,13 +251,13 @@ protected static function advancedVariable(array $vars, Context $context, string
251
251
252
252
if (!preg_match ("/^( \"| \\\\')(.*)( \"| \\\\')$/ " , $ var )) {
253
253
// foo] Rule 1: no starting [ or [ not start from head
254
- if (preg_match ('/^[^ \\[ \\ .]+[ \\] \\ [ ]/ ' , $ var )
254
+ if (preg_match ('/^[^ \\[.]+[ \\[ \\ ] ]/ ' , $ var )
255
255
// [bar Rule 2: no ending ] or ] not in the end
256
- || preg_match ('/[ \\[ \\]][^ \\ ] \\ .]+$/ ' , $ var )
256
+ || preg_match ('/[ \\[ \\]][^] .]+$/ ' , $ var )
257
257
// ]bar. Rule 3: middle ] not before .
258
- || preg_match ('/ \\ ][^ \\] \\ [ \\ . ]+ \\./ ' , $ var )
258
+ || preg_match ('/][^ \\[. \\ ] ]+ \\./ ' , $ var )
259
259
// .foo[ Rule 4: middle [ not after .
260
- || preg_match ('/ \\.[^ \\] \\ [ \\ . ]+ \\[/ ' , preg_replace ('/^(.. \\/)+/ ' , '' , preg_replace ('/ \\[[^ \\]]+ \\]/ ' , '[XXX] ' , $ var )))
260
+ || preg_match ('/ \\.[^ \\[. \\ ] ]+ \\[/ ' , preg_replace ('/^(.. \\/)+/ ' , '' , preg_replace ('/ \\[[^ \\]]+ \\]/ ' , '[XXX] ' , $ var )))
261
261
) {
262
262
$ context ->error [] = "Wrong variable naming as ' $ var' in $ token ! " ;
263
263
} else {
@@ -337,7 +337,7 @@ protected static function detectQuote(string $string): ?array
337
337
protected static function analyze (string $ token , Context $ context ): array
338
338
{
339
339
// Do not break quoted strings. Also, allow escaped quotes inside them.
340
- $ count = preg_match_all ('/(\s*)([^"\s]*"( \\\\\\\\.|[^"])*"|[^ \'\s]* \'( \\\\\\\\.|[^ \'])* \'| \\ S+)/ ' , $ token , $ matches );
340
+ $ count = preg_match_all ('/(\s*)([^"\s]*"( \\\\\\\\.|[^"])*"|[^ \'\s]* \'( \\\\\\\\.|[^ \'])* \'|\S+)/ ' , $ token , $ matches );
341
341
// Parse arguments and deal with "..." or [...] or (...) or \'...\' or |...|
342
342
if ($ count > 0 ) {
343
343
$ vars = [];
0 commit comments