axy/min-html

0.1.1 2015-12-08 13:48 UTC

This package is auto-updated.

Last update: 2024-10-08 02:20:46 UTC


README

Compress HTML.

Latest Stable Version Minimum PHP Version Build Status Coverage Status License

  • 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.

Compression

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).

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>

API

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

Example

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();

Tags

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);