PHPが出力するHTMLを圧縮(minify)したい!

2017年9月14日技術

この記事は2017年7月20日に書かれたものです。ご注意ください。

タイトルの通りです。
私が作っているツール(フレ石編成的ななにか)のindex.phpをどうにかして圧縮(minify)できないかなーと思ってたら以下のサイトを発見!

https://manablog.org/php-html-minify/

これをそのまんまPHPに組み込むことで

  • 改行が削除
  • 連続してるスペースが削除

されます。ただ、残念ながら<!-- コメントの文章 -->は自動的に削除されません(CSSやScriptをコメントアウトするケースもあるのでね…)。

のですが、私は削除したいと思ったので一部を改変。

$search = array(
    '/\>[^\S ]+/s',      // strip whitespaces after tags, except space
    '/[^\S ]+\</s',      // strip whitespaces before tags, except space
    '/(\s)+/s',          // shorten multiple whitespace sequences
    '/<!--[\s\S]*?-->/s' // コメントを削除
);
$replace = array(
    '>',
    '<',
    '\\1',
    ''
);

$search = array(でコメントを指定、$replace = array(で置換後を指定しました。これでコメントアウトされた箇所は削除、といったことができます。
<!------ ハイフンが多いとか形が違うとか ----->そういうのは全く確認してないです。

いやぁ、満足満足。
PHPはなかなか奥が深いですね。