From 2307e780bfc5dcc8763abe1dda425434f62d2058 Mon Sep 17 00:00:00 2001 From: mohrt Date: Fri, 13 Dec 2002 16:52:14 +0000 Subject: [PATCH] fix problem with matching single quoted strings --- Smarty_Compiler.class.php | 8 ++++---- libs/Smarty_Compiler.class.php | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Smarty_Compiler.class.php b/Smarty_Compiler.class.php index 5a77555c..a58e8f2a 100644 --- a/Smarty_Compiler.class.php +++ b/Smarty_Compiler.class.php @@ -1082,18 +1082,18 @@ class Smarty_Compiler extends Smarty { $var_exprs = preg_grep('!^\$\w+(?>(\[(\d+|\$\w+|\w+(\.\w+)?)\])|((\.|->)\$?\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens); $conf_var_exprs = preg_grep('!^#(\w+)#(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens); $sect_prop_exprs = preg_grep('!^%\w+\.\w+%(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens); - $quoted_exprs = preg_grep('!^' . $qstr_regexp . '$!', $tokens); + $db_quoted_exprs = preg_grep('!^"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"$!', $tokens); - if (count($quoted_exprs)) { + if (count($db_quoted_exprs)) { // replace variables embedded in quotes - foreach ($quoted_exprs as $expr_index => $var_expr) { + foreach ($db_quoted_exprs as $expr_index => $var_expr) { if(preg_match_all('|(?_parse_var($var) . '."', $var_expr); } - $tokens[$expr_index] = preg_replace(array('!(^""\.)|(\.""$)!','!\.""\.!'), array('','.'), $var_expr); + $tokens[$expr_index] = preg_replace('!\.""|""\.!', '', $var_expr); } } } diff --git a/libs/Smarty_Compiler.class.php b/libs/Smarty_Compiler.class.php index 5a77555c..a58e8f2a 100644 --- a/libs/Smarty_Compiler.class.php +++ b/libs/Smarty_Compiler.class.php @@ -1082,18 +1082,18 @@ class Smarty_Compiler extends Smarty { $var_exprs = preg_grep('!^\$\w+(?>(\[(\d+|\$\w+|\w+(\.\w+)?)\])|((\.|->)\$?\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens); $conf_var_exprs = preg_grep('!^#(\w+)#(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens); $sect_prop_exprs = preg_grep('!^%\w+\.\w+%(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens); - $quoted_exprs = preg_grep('!^' . $qstr_regexp . '$!', $tokens); + $db_quoted_exprs = preg_grep('!^"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"$!', $tokens); - if (count($quoted_exprs)) { + if (count($db_quoted_exprs)) { // replace variables embedded in quotes - foreach ($quoted_exprs as $expr_index => $var_expr) { + foreach ($db_quoted_exprs as $expr_index => $var_expr) { if(preg_match_all('|(?_parse_var($var) . '."', $var_expr); } - $tokens[$expr_index] = preg_replace(array('!(^""\.)|(\.""$)!','!\.""\.!'), array('','.'), $var_expr); + $tokens[$expr_index] = preg_replace('!\.""|""\.!', '', $var_expr); } } }