PHPでCSSを圧縮して出力したい場面があり、調べたコードで試していったのですが、なかなかうまくいかなかったのでメモ。

スポンサーリンク

はじめに

今回やりたいこと

  • PHPでCSSの圧縮

CSSの圧縮ってどうやってるんだろう?と思ったのですが、コメントやら不要なスペースなどを削除しているだけのようでした。

gzip圧縮などもありますが、今回は単純に、コメントや不要なスペースを削除する方法のみでやりたいと思います。

試したこと / できなかったこと

まず、調べたコードでいくつか試してみたのですが、ファイルの中身が空っぽに!?なってしまいました。

というのも、圧縮のプログラムが動作してなくて、新しいファイルに生成していたので中身が空のファイルが生成されていただけでした。。。

あとは、CSSがそのままで生成されている(圧縮されていない)、状態で生成されていたり、、で、はまってしまいました。

解決した方法

調べていくと、コメントを削除する正規表現の部分が違っていたようで、下記の方法で、できるようになりました。

// コメントの削除
$data = preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $data );

続いて、スペースなども削除していきます。

function minify_css( $data )
{
	// コメント削除
	$data = preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $data );
	// コロンの後の空白を削除する
	$data = str_replace(': ', ':', $data);
	// タブ、スペース、改行などを削除する
	$data = str_replace( array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $data );

	return $data;
}

コードは、こちらを参考にさせていただき、解決できました!

まとめ

PHPでやる方法があまり出てこなかったのと、正規表現がイマイチ使い慣れてないので、しばらくハマってしまいました。。

正規表現がバリバリ使えると羨ましいです。


スポンサーリンク

カテゴリー : 未分類