@@ -109,10 +109,10 @@ protected static function getExpression(string $v, Context $context, int|string
109109 $ ret [] = $ levels ;
110110 }
111111
112- if (preg_match ( ' / \\ ]/ ' , $ v )) {
112+ if (str_contains ( $ v , ' ] ' )) {
113113 preg_match_all (Token::VARNAME_SEARCH , $ v , $ matchedAll );
114114 } else {
115- preg_match_all ('/([^ \\ . \\/]+)/ ' , $ v , $ matchedAll );
115+ preg_match_all ('/([^. \\/]+)/ ' , $ v , $ matchedAll );
116116 }
117117
118118 if ($ v !== '. ' ) {
@@ -239,7 +239,7 @@ protected static function advancedVariable(array $vars, Context $context, string
239239 continue ;
240240 }
241241
242- if (preg_match ('/^(( \\[([^ \\]]+) \\])|([^=^[" \']+))=(.+)$/ ' , $ var , $ m )) {
242+ if (preg_match ('/^(( \\[([^ \\]]+) \\])|([^=^ \\ [" \']+))=(.+)$/ ' , $ var , $ m )) {
243243 $ idx = $ m [3 ] ? $ m [3 ] : $ m [4 ];
244244 $ var = $ m [5 ];
245245 // handle foo=(...)
@@ -251,13 +251,13 @@ protected static function advancedVariable(array $vars, Context $context, string
251251
252252 if (!preg_match ("/^( \"| \\\\')(.*)( \"| \\\\')$/ " , $ var )) {
253253 // foo] Rule 1: no starting [ or [ not start from head
254- if (preg_match ('/^[^ \\[ \\ .]+[ \\] \\ [ ]/ ' , $ var )
254+ if (preg_match ('/^[^ \\[.]+[ \\[ \\ ] ]/ ' , $ var )
255255 // [bar Rule 2: no ending ] or ] not in the end
256- || preg_match ('/[ \\[ \\]][^ \\ ] \\ .]+$/ ' , $ var )
256+ || preg_match ('/[ \\[ \\]][^] .]+$/ ' , $ var )
257257 // ]bar. Rule 3: middle ] not before .
258- || preg_match ('/ \\ ][^ \\] \\ [ \\ . ]+ \\./ ' , $ var )
258+ || preg_match ('/][^ \\[. \\ ] ]+ \\./ ' , $ var )
259259 // .foo[ Rule 4: middle [ not after .
260- || preg_match ('/ \\.[^ \\] \\ [ \\ . ]+ \\[/ ' , preg_replace ('/^(.. \\/)+/ ' , '' , preg_replace ('/ \\[[^ \\]]+ \\]/ ' , '[XXX] ' , $ var )))
260+ || preg_match ('/ \\.[^ \\[. \\ ] ]+ \\[/ ' , preg_replace ('/^(.. \\/)+/ ' , '' , preg_replace ('/ \\[[^ \\]]+ \\]/ ' , '[XXX] ' , $ var )))
261261 ) {
262262 $ context ->error [] = "Wrong variable naming as ' $ var' in $ token ! " ;
263263 } else {
@@ -337,7 +337,7 @@ protected static function detectQuote(string $string): ?array
337337 protected static function analyze (string $ token , Context $ context ): array
338338 {
339339 // 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 );
341341 // Parse arguments and deal with "..." or [...] or (...) or \'...\' or |...|
342342 if ($ count > 0 ) {
343343 $ vars = [];
0 commit comments