diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 6b08399f3d..73473cf3f8 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -730,17 +730,26 @@ abstract class Kernel implements KernelInterface, TerminableInterface return $source; } + $rawChunk = ''; $output = ''; - foreach (token_get_all($source) as $token) { + $tokens = token_get_all($source); + for (reset($tokens); false !== $token = current($tokens); next($tokens)) { if (is_string($token)) { - $output .= $token; + $rawChunk .= $token; + } elseif (T_START_HEREDOC === $token[0]) { + $output .= preg_replace(array('/\s+$/Sm', '/\n+/S'), "\n", $rawChunk) . $token[1]; + do { + $token = next($tokens); + $output .= $token[1]; + } while ($token[0] !== T_END_HEREDOC); + $rawChunk = ''; } elseif (!in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) { - $output .= $token[1]; + $rawChunk .= $token[1]; } } // replace multiple new lines with a single newline - $output = preg_replace(array('/\s+$/Sm', '/\n+/S'), "\n", $output); + $output .= preg_replace(array('/\s+$/Sm', '/\n+/S'), "\n", $rawChunk); return $output; } diff --git a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php index 46361f6f5a..d4295f5ab8 100644 --- a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php @@ -223,9 +223,28 @@ class KernelTest extends \PHPUnit_Framework_TestCase return; } - $source = <<