2

I want to use PHPWee to minify my site HTML, CSS and JS. Below is the code that I modified it from here:

class WP_HTML_Compression
{
    // Settings
    protected $compress_css = true;
    protected $compress_js = true;
    protected $info_comment = true;
    protected $remove_comments = true;

    // Variables
    protected $html;

    public function __construct($html) 
    {

        if (!empty($html)) {
         $this->parseHTML($html);
        }
    }

    public function __toString()
    {
        return $this->html;
    }

    protected function bottomComment($raw, $compressed)
    {
        $raw = strlen($raw);
        $compressed = strlen($compressed);

        $savings = ($raw-$compressed) / $raw * 100;

        $savings = round($savings, 2);

        return '<!--HTML compressed, size saved '.$savings.'%. From '.$raw.' bytes, now '.$compressed.' bytes-->';
    }

    protected function minifyHTML($html)
    {
        require_once ("vendor/phpwee-php-minifier/phpwee.php");
        return \PHPWee\Minify::html($html);     
    }

    public function parseHTML($html)
    {
        $this->html = $this->minifyHTML($html);

        if ($this->info_comment) {
            $this->html .= "\n" . $this->bottomComment($html, $this->html);
        }
    }

    protected 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;
    }
}

function wp_html_compression_finish($html) {
    return new WP_HTML_Compression($html);
}

function wp_html_compression_start() {
    ob_start('wp_html_compression_finish');
}
add_action('get_header', 'wp_html_compression_start');

But it doesn't work. I still the the uncompressed HTML, CSS, JS outputs. It also has something strange end the end of the HTML output:

....
....
....

</body>
</html>
<?
namespace PHPWee;
require_once("src/CssMin/CssMin.php");
require_once("src/HtmlMin/HtmlMin.php");
require_once("src/JsMin/JsMin.php");


// Open-source (BSD) PHP inline minifier functions for HTML, XHTML, HTML5, CSS 1-3 and Javascript.   
// BSD Licensed  - https://github.com/searchturbine/phpwee-php-minifier/blob/master/LICENSE
// 
// Usage
//  $output =    \PHPWee\Minify::html($any_html);
//  $output =     \PHPWee\Minify::css($any_css);
//  $output =     \PHPWee\Minify::js($any_js);





class Minify{

    public static function html($html){
        return HtmlMin::minify($html);
    }

    public static function css($css){
        return CssMin::minify($css);
    }

    public static function js($js){
        return JsMin::minify($js);
    }

}

What is going on?

How can I do it properly? Any ideas?

1

There is little 'bug' in PHPWee. It should use <?php instead of <?:

<?
namespace PHPWee;
require_once("src/CssMin/CssMin.php");
require_once("src/HtmlMin/HtmlMin.php");
require_once("src/JsMin/JsMin.php");


// Open-source (BSD) PHP inline minifier functions for HTML, XHTML, HTML5, CSS 1-3 and Javascript.   
// BSD Licensed  - https://github.com/searchturbine/phpwee-php-minifier/blob/master/LICENSE
// 
// Usage
//  $output =    \PHPWee\Minify::html($any_html);
//  $output =     \PHPWee\Minify::css($any_css);
//  $output =     \PHPWee\Minify::js($any_js);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.