@@ -224,10 +224,11 @@ private function lexValue()
224
224
throw $ this ->createFormatException ('Missing quote to end the value ' );
225
225
}
226
226
++$ this ->cursor ;
227
- $ value = str_replace (array ('\\\\' , '\\ " ' , '\r ' , '\n ' ), array ('\\' , '" ' , "\r" , "\n" ), $ value );
227
+ $ value = str_replace (array ('\\" ' , '\r ' , '\n ' ), array ('" ' , "\r" , "\n" ), $ value );
228
228
$ resolvedValue = $ value ;
229
229
$ resolvedValue = $ this ->resolveVariables ($ resolvedValue );
230
230
$ resolvedValue = $ this ->resolveCommands ($ resolvedValue );
231
+ $ resolvedValue = str_replace ('\\\\' , '\\' , $ resolvedValue );
231
232
$ v .= $ resolvedValue ;
232
233
} else {
233
234
$ value = '' ;
@@ -250,6 +251,7 @@ private function lexValue()
250
251
$ resolvedValue = $ value ;
251
252
$ resolvedValue = $ this ->resolveVariables ($ resolvedValue );
252
253
$ resolvedValue = $ this ->resolveCommands ($ resolvedValue );
254
+ $ resolvedValue = str_replace ('\\\\' , '\\' , $ resolvedValue );
253
255
254
256
if ($ resolvedValue === $ value && preg_match ('/\s+/ ' , $ value )) {
255
257
throw $ this ->createFormatException ('A value containing spaces must be surrounded by quotes ' );
@@ -350,7 +352,7 @@ private function resolveVariables($value)
350
352
}
351
353
352
354
$ regex = '/
353
- ( \\\\)? # escaped with a backslash?
355
+ ((?: \\\\)? \\\\ )? # escaped with a backslash?
354
356
\$
355
357
(?!\() # no opening parenthesis
356
358
(\{)? # optional brace
@@ -382,7 +384,7 @@ private function resolveVariables($value)
382
384
$ value .= '} ' ;
383
385
}
384
386
385
- return $ value ;
387
+ return $ matches [ 1 ]. $ value ;
386
388
}, $ value );
387
389
388
390
// unescape $
0 commit comments