PHPの勉強に「10 Life-Saving PHP Snippets」で紹介されているコードを読んでみる。(Compress multiple CSS files)

PHPの勉強に「10 Life-Saving PHP Snippets」で紹介されているコードを読んでみる。

■Compress multiple CSS files(複数CSSファイルの圧縮)

ソースコードは次のようなもの。

header('Content-type: text/css');
ob_start("compress");
function compress($buffer) {
  /* remove comments */
  $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
  /* remove tabs, spaces, newlines, etc. */
  $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
  return $buffer;
}

/* your css files */
include('master.css');
include('typography.css');
include('grid.css');
include('print.css');
include('handheld.css');

ob_end_flush();

複数のCSSファイルを一つにまとめ、改行コードや連続する空白文字などを削除して出力する。

■解説

ob_start("compress");

ob_start関数は出力のバッファリングを有効にする。
最初の引数は、バッファを出力する時に呼ばれる関数。
この関数は出力バッファの内容を引数として受け取り、出力結果を返す。

function compress($buffer) {
  /* remove comments */
  $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
  /* remove tabs, spaces, newlines, etc. */
  $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
  return $buffer;
}

compress関数はバッファを出力する時に呼び出される。
この関数は、CSSのコメントと改行コードやタブ文字、連続する空白文字を削除している。

/* your css files */
include('master.css');
include('typography.css');
include('grid.css');
include('print.css');
include('handheld.css');

include()は指定されたファイルを読み込み、評価する。
ここではCSSファイルを読み込み、CSSファイルの内容を出力バッファに入れている。

ob_end_flush();

ob_end_flush()は出力用バッファを送信する。

include()でファイルを読み込みob_start()のコールバック関数で処理を行って出力するという方法は、CSSファイルの圧縮以外の用途にも使えるかもしれない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください