summaryrefslogtreecommitdiffstats
path: root/system/core
diff options
context:
space:
mode:
authorjudge <mjnaderi@gmail.com>2013-09-10 16:13:27 +0200
committerjudge <mjnaderi@gmail.com>2013-09-10 16:13:27 +0200
commit855f91759d383aadc8e1a4fee675c4afb59305cf (patch)
treeaed01e365aea6ef01cb41868e17a6e4f131f87fb /system/core
parentc65a12e3b0c3f28369ecdef3dc7529f159dfe845 (diff)
Improved detecting whether the pointer is in a string or not
Diffstat (limited to 'system/core')
-rw-r--r--system/core/Output.php24
1 files changed, 22 insertions, 2 deletions
diff --git a/system/core/Output.php b/system/core/Output.php
index e323385ba..5272ba662 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -849,6 +849,26 @@ class CI_Output {
// Remove CSS comments
$output = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!i', '', $output);
+ // Remove Javascript inline comments
+ if ($has_tags === TRUE && strpos(strtolower($open_tag), 'script') !== FALSE) {
+ $lines = preg_split('/((\r?\n)|(\n?\r))/',$output);
+ foreach ($lines as &$line){
+ $in_string = $in_dstring = FALSE;
+ $len = strlen($line);
+ for ($i=0; $i<$len; $i++){
+ if ( !$in_string && !$in_dstring && substr($line,$i,2)==='//'){
+ $line = substr($line,0,$i);
+ break;
+ }
+ if ( $line[$i]==='"' )
+ $in_dstring = ! $in_dstring;
+ if ( $line[$i]==="'" )
+ $in_string = ! $in_string;
+ }
+ }
+ $output = implode("\n",$lines);
+ }
+
// Remove spaces around curly brackets, colons,
// semi-colons, parenthesis, commas
$chunks = preg_split('/([\'|"]).+(?![^\\\]\\1)\\1/iU', $output, -1, PREG_SPLIT_OFFSET_CAPTURE);
@@ -899,11 +919,11 @@ class CI_Output {
}
}
- if ($value === "'")
+ if ($value === "'" && ! $in_dstring)
{
$in_string = ! $in_string;
}
- elseif ($value === '"')
+ elseif ($value === '"' && ! $in_string)
{
$in_dstring = ! $in_dstring;
}