Compress HTML.
- The library does not require any dependencies.
- Tested on PHP 5.4+, PHP 7, HHVM (on Linux), PHP 5.5 (on Windows).
- Install:
composer require axy/min-html. - License: MIT.
Simply removes the indentation at the beginning and end of lines. With some exceptions:
- Indents inside some tags (as
<pre>and<textarea>) are relevant. - The content of some tags can be handled in a special way (compress for
<script>and<style>for example).
The source content:
<head>
<title>Test</title>
<script>
var x = 2 + 2;
console.log(x);
</script>
</head>
<body>
<h1>Test</h1>
<p>
This is
example
of HTML compression.
</p>
<pre>
Content of PRE
is PRE
</pre>
</body>The compressed content:
<head>
<title>Test</title>
<script>var x=2+2;console.log(x);</script>
</head>
<body>
<h1>Test</h1>
<p>
This is
example
of HTML compression.
</p>
<pre>
Content of PRE
is PRE
</pre>
</body>The library defines the single public class axy\min\html\HTMLMinifier.
Methods:
__construct(string $content [, array $tags])run(void): stringgetOriginContent(void): stringgetCompressedContent(void): stringgetTags(void): array
Static methods:
compress(string $content [, array $tags]): stringcompressFromFile(string $content [, array $tags]): stringcompressFile(string $source, string $destination [, array $tags]): stringgetDefaultsTags([array $tags]): array
Using static:
use axy\min\html\HTMLMinifier;
$source = 'index.html';
$destination = 'index.min.html';
HTMLMinifier::compressFile($source, $destination);Without static:
$min = new HTMLMinifier($content);
$min->run();
echo $min->getCompressedContent();The optional array tags specifies how to handle content of the tags.
Defaults is
[
'pre' => true,
'textarea' => true,
]Argument $tags merges with the defaults.
TRUE - do not change.
Or callback.
$tags = [
'script' => function ($content) {
return JSMinify::minify($content);
},
'textarea' => null, // Remove rule for TEXTAREA
'style' => true, // Content of STYLE does not change
];
HTMLMinifier::compressFile($source, $destination, $tags);