Something else is wrong here.
I reduced this "class" to one page of a PHP script (replacing any calls to $ this-> with either true (in the case of ivars) or a static function call.
Then I did a lot of tests with long HTML input and tried to mess with conditional comments, including copying in your conditional <html> tags that you had before. Each time the results were one line of output.
In conclusion, there are some possibilities:
- Is there anything else in your HTML throwing (link to actual page?)
- Minification occurs before additional HTML is added (very possible)
- One of the Ivars is wrong (unlikely)
- Something inserts
<!--wp-html-compression no compression--> into this part of your document.
Why not insert error_log($html); (or similar) at the beginning of the minifyHTML ($ html) method to see what the original HTML looked like. I assume the results of this will tell you why it is not working. (you could just return $html; too, I would have guessed.)
EDIT --- Here is my "script", note that the "Conditional" comments remain, and the HTML conditional comments are separated. And I didn't bother with string formatting at all, as it was just a hack from the source class that you provided.
<?php $html = <<<EOF <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]--> <!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]--> <!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]--> <!--[if (gte IE 9)|!(IE)]><!--><html lang="en"><!--<![endif]--> <head> <meta http-equiv="X-UA-Compatible" content="IE=8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Page Title</title> <meta name="description" content="desc" /> <meta name="keywords" content="c" /> <meta name="robots" content="INDEX,FOLLOW" /> <link rel="icon" href="http://www.stackoverflow.com/" type="image/x-icon" /> <link rel="shortcut icon" href="http://www.stackoverflow.com/" type="image/x-icon" /> <!--[if lt IE 7]> <script type="text/javascript"> //<![CDATA[ var BLANK_URL = ''; //]]> </script> <![endif]--> <!--[if lt IE 8]> <style type="text/css"> .single-call-to-action .action-text { filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000, endColorstr=#66000000); } #PaypalSideBar a img { left: 0 !important; top: 0 !important; width: 182px !important; height: 96px !important; } </style> <![endif]--> <!--[if lt IE 9]> <style type="text/css"> .single-call-to-action .action-text { -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000, endColorstr=#66000000)"; } </style> <![endif]--> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript">jQuery.noConflict();</script> <link href="//fonts.googleapis.com/css?family=Marck+Script" rel="stylesheet" type="text/css"> <link rel="stylesheet" type="text/css" href="http://www.stackoverflow.com/test.css" media="all" /> <!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="http://www.stackoverflow.com/test.css" media="all" /><![endif]--> <!--[if lt IE 7]><script type="text/javascript" src="http://www.stackoverflow.com/test.js"></script><script type="text/javascript" src="http://www.stackoverflow.com/test.js"></script><![endif]--> <script type="text/javascript"> //<![CDATA[ Mage.Cookies.path = '/'; //]]> </script> <script type="text/javascript"> //<![CDATA[ optionalZipCountries = ["US"]; //]]> </script> <!-- BEGIN GOOGLE ANALYTICS CODEs --> <script type="text/javascript"> //<![CDATA[ var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-x']); _gaq.push(['_setDomainName', 'http://www.stackoverflow.com/']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); //]]> </script> <!-- END GOOGLE ANALYTICS CODE --> <script type="text/javascript"> //<![CDATA[ window.HDUSeed = 'x'; window.HDUSeedIntId = setInterval(function() { if (document.observe) { document.observe('dom:loaded', function() { for (var i = 0; i < document.forms.length; i++) { if (document.forms[i].getAttribute('action') && document.forms[i].getAttribute('action').match('contacts/index/post')) { var el = document.createElement('input'); el.type = ('hidden'); el.name = 'hdu_seed'; el.value = window.HDUSeed; document.forms[i].appendChild(el); } } }); clearInterval(window.HDUSeedIntId) } }, 100) //]]> </script> <script type="text/javascript">//<![CDATA[ var Translator = new Translate([]); //]]></script><meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"/> <style type="text/css"> /*default iteaser*/ #TT2ILTbox { background-color: #f3f3f3; border: 1px solid #d2d2d2; padding: 10px; text-align: center; width: 280px; margin-bottom: 10px; margin-top: 10px; } #TT2ILTbox h2 { font-size: 12px; font-weight: bold; margin: 5px 0 5px 0; } #TT2ILTcount-line * { font-size: 11px; } #TT2ILTcount-line strong { font: bold 11px Arial; } #TT2ILTcount-line p { margin: 5px 0 5px 0; } #TT2ILTbutton-holder { display: -moz-box !important; display: block; height: 31px; text-align: center; } a.TT2ILTbutton, a.TT2ILTbutton span { background-color: #fa002f; } .TT2ILTbutton * { font: bold 12px Arial; } a.TT2ILTbutton { background-image: url('http://static.www.turnto.com/tra2/images/iteaser/1/button-right.png'); background-repeat: no-repeat; background-position: top right; display: block; height: 31px; margin-right: 6px; padding-right: 16px; text-decoration: none; color: white; } a.TT2ILTbutton span { background-image: url('http://static.www.turnto.com/tra2/images/iteaser/1/button-left.png'); background-repeat: no-repeat; display: block; line-height: 22px; padding: 2px 0 7px 18px; } a.TurnToIteaSee { font-size: 11px; text-decoration: none; color: #000; cursor: pointer; } </style> </head> <body class=" cms-index-index cms-home"> <div class="wrapper"> <noscript> <div class="global-site-notice noscript"> <div class="notice-inner"> <p> <strong>JavaScript seems to be disabled in your browser.</strong><br /> You must have JavaScript enabled in your browser to utilize the functionality of this website. </p> </div> </div> </noscript> <div class="page"> </div> </div> </body> </html> EOF; function removeWhiteSpace($str) { $str = str_replace("\t", ' ', $str); $str = str_replace("\n", '', $str); $str = str_replace("\r", '', $str); while (stristr($str, ' ')) { $str = str_replace(' ', ' ', $str); } return $str; } $pattern = '/<(?<script>script).*?<\/script\s*>|<(?<style>style).*?<\/style\s*>|<!(?<comment>--).*?-->|<(?<tag>[\/\w.:-]*)(?:".*?"|\'.*?\'|[^\'">]+)*>|(?<text>((<[^!\/\w.:-])?[^<]*)+)|/si'; preg_match_all($pattern, $html, $matches, PREG_SET_ORDER); $overriding = false; $raw_tag = false; // Variable reused for output $html = ''; foreach ($matches as $token) { $tag = (isset($token['tag'])) ? strtolower($token['tag']) : null; $content = $token[0]; if (is_null($tag)) { if ( !empty($token['script']) ) { $strip = true; } else if ( !empty($token['style']) ) { $strip = true; } else if ($content == '<!--wp-html-compression no compression-->') { $overriding = !$overriding; // Don't print the comment continue; } else if (true) { if (!$overriding && $raw_tag != 'textarea') { // Remove any HTML comments, except MSIE conditional comments $content = preg_replace('/<!--(?!\s*(?:\[if [^\]]+]|<!|>))(?:(?!-->).)*-->/s', '', $content); } } } else { if ($tag == 'pre' || $tag == 'textarea') { $raw_tag = $tag; } else if ($tag == '/pre' || $tag == '/textarea') { $raw_tag = false; } else { if ($raw_tag || $overriding) { $strip = false; } else { $strip = true; // Remove any empty attributes, except: // action, alt, content, src $content = preg_replace('/(\s+)(\w++(?<!\baction|\balt|\bcontent|\bsrc)="")/', '$1', $content); // Remove any space before the end of self-closing XHTML tags // JavaScript excluded $content = str_replace(' />', '/>', $content); } } } if ($strip) { $content = removeWhiteSpace($content); } $html .= $content; } echo $html;