From 062ed5ca3e1b5255e6d94be3cf8d6a6234e11471 Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Sun, 13 Nov 2011 14:10:36 +0100 Subject: [PATCH] regex optimization --- lib/Twig/Lexer.php | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Twig/Lexer.php b/lib/Twig/Lexer.php index ad1e87a..c4f2c71 100644 --- a/lib/Twig/Lexer.php +++ b/lib/Twig/Lexer.php @@ -41,7 +41,7 @@ class Twig_Lexer implements Twig_LexerInterface const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A'; const REGEX_STRING = '/\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; const REGEX_DQ_STRING_START = '/"/A'; - const REGEX_DQ_STRING_PART = '/(?:[^#"\\\\]|\\\\.|#(?!{))+/A'; + const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; const PUNCTUATION = '()[]{}?:.,|'; public function __construct(Twig_Environment $env, array $options = array()) @@ -304,7 +304,7 @@ class Twig_Lexer implements Twig_LexerInterface $this->moveCursor($match[0]); $this->pushState(self::STATE_INTERPOLATION); - } else if (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, null, $this->cursor)) { + } else if (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, null, $this->cursor) && strlen($match[0]) > 0) { $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0])); $this->moveCursor($match[0]); -- 1.7.2.5