css-compressor
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
/**
* Verwijderd nutteloze tekens uit een CSS bestand.
*
* @param string $_sFullPath | Volledige pad naar het CSS bestand (b.v.: "c:\pad\style.css" of "/foo/bar/style.css")
* @return string / boolean false
*/
function compress_css_file( $_sFullPath )
{
if( !file_exists($_sFullPath) )
{
return false;
}
# Lees CSS bestand in
$sContent = file_get_contents($_sFullPath);
# Verwijder CSS kommentaar
$sContent = preg_replace('/\/\*.*?\*\//s', '', $sContent);
# Verwijder alle enters en tabs uit de inhoud van het CSS bestand
$sContent = str_replace(array("\r", "\n", "\t"), '', $sContent);
# Whitespaces rond bepaalde tekens verwijderen
$sContent = preg_replace('/\s*({|}|;|:|,)\s*/', '$1', $sContent);
# Verwijder alle dubbele spaties
$sContent = preg_replace('/ {2,}/', '', $sContent);
# Grijp alle {....} blokken
if( preg_match_all('/{.*?}/s', $sContent, $aMatch) )
{
$aMatch[0] = array_unique($aMatch[0]);
foreach( $aMatch[0] as $k => $v )
{
# Verwijder laatste ";" van laatste statement in een blok
$l = strlen($v);
if( $v[$l-2] == ';' )
{
$v = substr($v, 0, $l-2) . '}';
}
# Vervang het nieuw blok met het oude.
$sContent = str_replace($aMatch[0][$k], $v, $sContent);
} # end foreach
} # end if
return $sContent;
} # end method compress_css_file
?>
/**
* Verwijderd nutteloze tekens uit een CSS bestand.
*
* @param string $_sFullPath | Volledige pad naar het CSS bestand (b.v.: "c:\pad\style.css" of "/foo/bar/style.css")
* @return string / boolean false
*/
function compress_css_file( $_sFullPath )
{
if( !file_exists($_sFullPath) )
{
return false;
}
# Lees CSS bestand in
$sContent = file_get_contents($_sFullPath);
# Verwijder CSS kommentaar
$sContent = preg_replace('/\/\*.*?\*\//s', '', $sContent);
# Verwijder alle enters en tabs uit de inhoud van het CSS bestand
$sContent = str_replace(array("\r", "\n", "\t"), '', $sContent);
# Whitespaces rond bepaalde tekens verwijderen
$sContent = preg_replace('/\s*({|}|;|:|,)\s*/', '$1', $sContent);
# Verwijder alle dubbele spaties
$sContent = preg_replace('/ {2,}/', '', $sContent);
# Grijp alle {....} blokken
if( preg_match_all('/{.*?}/s', $sContent, $aMatch) )
{
$aMatch[0] = array_unique($aMatch[0]);
foreach( $aMatch[0] as $k => $v )
{
# Verwijder laatste ";" van laatste statement in een blok
$l = strlen($v);
if( $v[$l-2] == ';' )
{
$v = substr($v, 0, $l-2) . '}';
}
# Vervang het nieuw blok met het oude.
$sContent = str_replace($aMatch[0][$k], $v, $sContent);
} # end foreach
} # end if
return $sContent;
} # end method compress_css_file
?>