wa72 / html-pretty-min
HTML minifier and indenter that works on the DOM tree
Installs: 160 509
Dependents: 9
Suggesters: 4
Security: 0
Stars: 21
Watchers: 3
Forks: 8
Open Issues: 5
Requires
- php: >=5.4
- mrclay/jsmin-php: ^2.3
- symfony/options-resolver: >=2.3
- tubalmartin/cssmin: ^4
Requires (Dev)
- phpunit/phpunit: ^4|^5|^6|^7
README
HTML Pretty-Min is a PHP library for minifying and prettyprinting (indenting) HTML documents that works directly on the DOM tree of an HTML document.
Currently it has the following features:
-
Prettyprint:
- Indent Block-level elements, do not indent inline elements
-
Minify:
- Remove whitespace and newlines
- Compress embedded Javascript using mrclay/jsmin-php
- Compress embedded CSS using tubalmartin/cssmin
- Remove some attributes when their value is empty (by default "style" and "class" attributes)
- Remove comments, except those matching some given regular expressions (by default, IE conditional comments are kept)
Installation
HTML Pretty-Min is listed on Packagist.
composer require wa72/html-pretty-min
Usage
<?php use Wa72\HtmlPrettymin\PrettyMin; $pm = new PrettyMin(); $output = $pm ->load($html) // $html may be a \DOMDocument, a string containing an HTML code, // or an \SplFileInfo pointing to an HTML document ->minify() ->saveHtml();
For prettyprinting, call the indent()
method instead of minify()
.
Attention: Because the formatting is done directly on the DOM tree, a DOMDocument object given to the load()
method
will be modified:
$dom_document = new \DOMDocument('1.0', 'UTF-8'); $dom_document->loadHTML('<html>...some html code...</html>'); $pm->load($dom_document)->minify(); echo $dom_document->saveHTML(); // Will output the minified, not the original, document