PHPが出力するHTMLを圧縮(minify)したい!
タイトルの通りです。
私が作っているツール(フレ石編成的ななにか)の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はなかなか奥が深いですね。
ディスカッション
コメント一覧
コメントアウトのminifyの追加ですが、、パターンにより全部HTMLが消えるパターンがあるようです。