From 0c2622e2e7973342981a4f9c0293d11cf3b3df2c Mon Sep 17 00:00:00 2001 From: Pierre-Yves LEBECQ Date: Tue, 22 Jul 2014 15:26:16 +0200 Subject: [PATCH] [ExpressionLanguage] Fixed an issue with # characters in double quoted string literals --- src/Symfony/Component/ExpressionLanguage/Lexer.php | 2 +- .../Component/ExpressionLanguage/Tests/LexerTest.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/ExpressionLanguage/Lexer.php b/src/Symfony/Component/ExpressionLanguage/Lexer.php index aba51bb3fb..26bb51d42e 100644 --- a/src/Symfony/Component/ExpressionLanguage/Lexer.php +++ b/src/Symfony/Component/ExpressionLanguage/Lexer.php @@ -69,7 +69,7 @@ class Lexer $tokens[] = new Token(Token::PUNCTUATION_TYPE, $expression[$cursor], $cursor + 1); ++$cursor; - } elseif (preg_match('/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As', $expression, $match, null, $cursor)) { + } elseif (preg_match('/"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As', $expression, $match, null, $cursor)) { // strings $tokens[] = new Token(Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1)), $cursor + 1); $cursor += strlen($match[0]); diff --git a/src/Symfony/Component/ExpressionLanguage/Tests/LexerTest.php b/src/Symfony/Component/ExpressionLanguage/Tests/LexerTest.php index 25c1e5ac59..8af5c1c101 100644 --- a/src/Symfony/Component/ExpressionLanguage/Tests/LexerTest.php +++ b/src/Symfony/Component/ExpressionLanguage/Tests/LexerTest.php @@ -78,6 +78,14 @@ class LexerTest extends \PHPUnit_Framework_TestCase array(new Token('operator', '..', 1)), '..', ), + array( + array(new Token('string', '#foo', 1)), + "'#foo'", + ), + array( + array(new Token('string', '#foo', 1)), + '"#foo"', + ), ); } }