Funkcja: prosty paker CSS
2008-04-10 12:16
Funkcja za pomocą kilku wyrażeń regularnych usuwa niepotrzebne znaki tworząc plik jednolinijkowy. Rezultaty są zadowalające - przy niektórych olbrzymich plikach CSS sięgają nawet do 6 kb. Po co pakować plik CSS? Jest wiele powodów. Jeśli nasz serwis WWW jest oblegany, to zysk nawet 6 kb (przy założeniu, że liczba użytkowników przekracza 12 tysięcy unikalnych na dobę) jest zauważalny. Polecam sprawdzić.
function mzCssPacker($i)
{
$i = preg_replace("/\/\*.*\*\/|\/\/.*\n/Usi", "", $i);
$i = preg_replace("/[^a-z0-9\#\;\:\.\{\}\'\"\(\)\*\ \,\-\_\!\/\=\%]/si", "", $i);
$i = preg_replace('/\s\s+/', " ", $i);
$i = preg_replace("/\{ /", "{", $i);
$i = preg_replace("/(\, |\: | \{|\ \!| \})/e", "trim('\\1')", $i);
$i = preg_replace("/\;\}/", "}", $i);
$i = preg_replace("/\#([a-z0-9])\\1+/si", "#\\1\\1\\1", $i);
$i = preg_replace("/([0-9][a-z]?[a-z]? [0-9][a-z]?[a-z]?)\ \\1/si", "\\1", $i);
return $i;
}
{
$i = preg_replace("/\/\*.*\*\/|\/\/.*\n/Usi", "", $i);
$i = preg_replace("/[^a-z0-9\#\;\:\.\{\}\'\"\(\)\*\ \,\-\_\!\/\=\%]/si", "", $i);
$i = preg_replace('/\s\s+/', " ", $i);
$i = preg_replace("/\{ /", "{", $i);
$i = preg_replace("/(\, |\: | \{|\ \!| \})/e", "trim('\\1')", $i);
$i = preg_replace("/\;\}/", "}", $i);
$i = preg_replace("/\#([a-z0-9])\\1+/si", "#\\1\\1\\1", $i);
$i = preg_replace("/([0-9][a-z]?[a-z]? [0-9][a-z]?[a-z]?)\ \\1/si", "\\1", $i);
return $i;
}
Zalety owej funkcji:
- mała
- nie wymaga instalacji dodatkowych bibliotek
- jeden plik
Czego ta funkcja mieć nie będzie:
- skracania kolorów, na przykład: #ff0000 na red
- parsowania składni CSS (jeśli plik oryginalny zawiera błędy, to po użyciu tej funkcji strona może być "do góry nogami")
Funkcję wywołuje się w następujący sposób:
echo mzCssPacker($kod_css);
Jeśli zaś potrzebujecie naprawdę mocnego narzędzia, polecam zapoznać się z możliwościami CSS Tidy.
