From d4eec01a9b4e34e46eebfd43e1b5c6366e80967e Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Mon, 6 May 2013 14:01:58 +0200 Subject: [PATCH] Move html case up since it is the most likely to be hit --- lib/Twig/Extension/Core.php | 64 +++++++++++++++++++++--------------------- 1 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lib/Twig/Extension/Core.php b/lib/Twig/Extension/Core.php index 26e7017..38ac008 100644 --- a/lib/Twig/Extension/Core.php +++ b/lib/Twig/Extension/Core.php @@ -862,6 +862,38 @@ function twig_escape_filter(Twig_Environment $env, $string, $strategy = 'html', $string = (string) $string; switch ($strategy) { + case 'html': + // see http://php.net/htmlspecialchars + + // Using a static variable to avoid initializing the array + // each time the function is called. Moving the declaration on the + // top of the function slow downs other escaping strategies. + static $htmlspecialcharsCharsets = array( + 'iso-8859-1' => true, 'iso8859-1' => true, + 'iso-8859-15' => true, 'iso8859-15' => true, + 'utf-8' => true, + 'cp866' => true, 'ibm866' => true, '866' => true, + 'cp1251' => true, 'windows-1251' => true, 'win-1251' => true, + '1251' => true, + 'cp1252' => true, 'windows-1252' => true, '1252' => true, + 'koi8-r' => true, 'koi8-ru' => true, 'koi8r' => true, + 'big5' => true, '950' => true, + 'gb2312' => true, '936' => true, + 'big5-hkscs' => true, + 'shift_jis' => true, 'sjis' => true, '932' => true, + 'euc-jp' => true, 'eucjp' => true, + 'iso8859-5' => true, 'iso-8859-5' => true, 'macroman' => true, + ); + + if (isset($htmlspecialcharsCharsets[strtolower($charset)])) { + return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); + } + + $string = twig_convert_encoding($string, 'UTF-8', $charset); + $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + + return twig_convert_encoding($string, $charset, 'UTF-8'); + case 'js': // escape all non-alphanumeric characters // into their \xHH or \uHHHH representations @@ -915,38 +947,6 @@ function twig_escape_filter(Twig_Environment $env, $string, $strategy = 'html', return $string; - case 'html': - // see http://php.net/htmlspecialchars - - // Using a static variable to avoid initializing the array - // each time the function is called. Moving the declaration on the - // top of the function slow downs other escaping strategies. - static $htmlspecialcharsCharsets = array( - 'iso-8859-1' => true, 'iso8859-1' => true, - 'iso-8859-15' => true, 'iso8859-15' => true, - 'utf-8' => true, - 'cp866' => true, 'ibm866' => true, '866' => true, - 'cp1251' => true, 'windows-1251' => true, 'win-1251' => true, - '1251' => true, - 'cp1252' => true, 'windows-1252' => true, '1252' => true, - 'koi8-r' => true, 'koi8-ru' => true, 'koi8r' => true, - 'big5' => true, '950' => true, - 'gb2312' => true, '936' => true, - 'big5-hkscs' => true, - 'shift_jis' => true, 'sjis' => true, '932' => true, - 'euc-jp' => true, 'eucjp' => true, - 'iso8859-5' => true, 'iso-8859-5' => true, 'macroman' => true, - ); - - if (isset($htmlspecialcharsCharsets[strtolower($charset)])) { - return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); - } - - $string = twig_convert_encoding($string, 'UTF-8', $charset); - $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); - - return twig_convert_encoding($string, $charset, 'UTF-8'); - case 'url': if (version_compare(PHP_VERSION, '5.3.0', '<')) { return str_replace('%7E', '~', rawurlencode($string)); -- 1.7.2.5