You are here

function _minify_html in Minify 7

Helper function to minify HTML

1 call to _minify_html()
minify_process_html in ./minify.module
Implements hook_process_html()

File

./minify.module, line 129

Code

function _minify_html($buffer) {

  /* Replace <textarea> with placeholder */
  $buffer = preg_replace_callback('/\\s*<textarea(\\b[^>]*?>[\\s\\S]*?<\\/textarea>)\\s*/i', '_minify_html_callback', $buffer);

  /* Replace <pre> with placeholder */
  $buffer = preg_replace_callback('/\\s*<pre(\\b[^>]*?>[\\s\\S]*?<\\/pre>)\\s*/i', '_minify_html_callback', $buffer);

  /* Replace <iframe> with placeholder */
  $buffer = preg_replace_callback('/\\s*<iframe(\\b[^>]*?>[\\s\\S]*?<\\/iframe>)\\s*/i', '_minify_html_iframe_callback', $buffer);

  /* Replace <script> with placeholder */
  $buffer = preg_replace_callback('/\\s*<script(\\b[^>]*?>[\\s\\S]*?<\\/script>)\\s*/i', '_minify_html_script_callback', $buffer);

  /* Replace <style> with placeholder */
  $buffer = preg_replace_callback('/\\s*<style(\\b[^>]*?>[\\s\\S]*?<\\/style>)\\s*/i', '_minify_html_style_callback', $buffer);

  /* Remove HTML comment */
  $buffer = preg_replace_callback('/<!--([\\s\\S]*?)-->/', '_minify_html_html_comment', $buffer);
  $search = array(
    '/\\>[^\\S ]+/s',
    // remove whitespaces after tags, except space
    '/[^\\S ]+\\</s',
    // remove whitespaces before tags, except space
    '/(\\s)+/s',
    // shorten multiple whitespace sequences
    '/\\s+(<\\/?(?:area|base(?:font)?|blockquote|body' . '|caption|center|col(?:group)?|dd|dir|div|dl|dt|fieldset|form' . '|frame(?:set)?|h[1-6]|head|hr|html|legend|li|link|map|menu|meta' . '|ol|opt(?:group|ion)|p|param|t(?:able|body|head|d|h||r|foot|itle)' . '|ul)\\b[^>]*>)/i',
    // remove whitespaces around block/undisplayed elements
    '/^\\s+|\\s+$/m',
  );
  $replace = array(
    '>',
    // remove whitespaces after tags, except space
    '<',
    // remove whitespaces before tags, except space
    '\\1',
    // shorten multiple whitespace sequences
    '$1',
    // remove whitespaces around block/undisplayed elements
    '',
  );
  $buffer = preg_replace($search, $replace, $buffer);

  /* Find and replace <textarea>, <pre>, <iframe>, <script> and <style> place holders values */
  global $placeholders;
  if (!empty($placeholders)) {
    $buffer = str_replace(array_keys($placeholders), array_values($placeholders), $buffer);
  }
  return $buffer;
}