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): string
getOriginContent(void): string
getCompressedContent(void): string
getTags(void): array
Static methods:
compress(string $content [, array $tags]): string
compressFromFile(string $content [, array $tags]): string
compressFile(string $source, string $destination [, array $tags]): string
getDefaultsTags([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);