Skip to content

Commit

Permalink
minify html #30
Browse files Browse the repository at this point in the history
  • Loading branch information
h-mj committed Apr 23, 2017
1 parent e63e7d9 commit 99a8f00
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
7 changes: 7 additions & 0 deletions application/config/hooks.php
Expand Up @@ -18,3 +18,10 @@
'filename' => 'LanguageLoader.php',
'filepath' => 'hooks'
);

$hook['display_override'][] = array(
'class' => '',
'function' => 'compress',
'filename' => 'compress.php',
'filepath' => 'hooks'
);
42 changes: 42 additions & 0 deletions application/hooks/compress.php
@@ -0,0 +1,42 @@
// https://github.com/bcit-ci/CodeIgniter/wiki/Compress-HTML-output
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
function compress()
{
ini_set("pcre.recursion_limit", "16777");
$CI =& get_instance();
$buffer = $CI->output->get_output();

$re = '%# Collapse whitespace everywhere but in blacklisted elements.
(?> # Match all whitespans other than single space.
[^\S ]\s* # Either one [\t\r\n\f\v] and zero or more ws,
| \s{2,} # or two or more consecutive-any-whitespace.
) # Note: The remaining regex consumes no text at all...
(?= # Ensure we are not in a blacklist tag.
[^<]*+ # Either zero or more non-"<" {normal*}
(?: # Begin {(special normal*)*} construct
< # or a < starting a non-blacklist tag.
(?!/?(?:textarea|pre|script)\b)
[^<]*+ # more non-"<" {normal*}
)*+ # Finish "unrolling-the-loop"
(?: # Begin alternation group.
< # Either a blacklist start tag.
(?>textarea|pre|script)\b
| \z # or end of file.
) # End alternation group.
) # If we made it here, we are not in a blacklist tag.
%Six';

$new_buffer = preg_replace($re, " ", $buffer);

// We are going to check if processing has working
if ($new_buffer === null)
{
$new_buffer = $buffer;
}

$CI->output->set_output($new_buffer);
$CI->output->_display();
}

/* End of file compress.php */
/* Location: ./system/application/hooks/compress.php */

0 comments on commit 99a8f00

Please sign in to comment.