CSS Compressor
Auteur: Martijn! (phphulp.nl) - 29 oktober 2007 - 14:54 - Gekeurd door: Ibrahim - Hits: 5621 - Aantal punten: (0 stemmen)
Ik wou een script dat code in alle bestanden die css, html, php of javascript bevat kon vereenvoudigen, na wat zoekwerk heb ik een script gevonden die een opgegeven css-bestand kon parsen naar css-bestand zonder overbodige spaties, ;, enters, commentaar enz. Dit script is alleen maar handig voordat je de css-bestanden op het internet zet (omdat het kleiner is, en minder bruikbaar maakt voor andere mensen omdat de commentaar toch verwijderd word).
Ik hoop dat dit voor sommige mensen handig zou zijn (en zit daarom ook bij handige scripts). Ik wil zo rap mogelijk een versie dat ook php, javascript en html in een opgegeven map kan parsen tot een kleiner bestand (zonder te zippen of zo) en output in een zip-bestand, die je vervolgens kan downloaden (en uploaden op de host). Wat voorlopig voor mij veel te moeilijk is op dit ogenblik.
De uitleg zit in de script en voor de rest hoor ik heel graag suggesties wat er beter kan.
Bron: http://www.phphulp.nl/php/scripts/1/1145/
|
Code: |
Voorbeeld:
<?
//Let op bij dubbele haakjes: \ word dan \\
$sResultaat = compress_css_file('C:\htdocs\style.css');
echo $sResultaat;
?>
<? //Let op bij dubbele haakjes: \ word dan \\ $sResultaat = compress_css_file('C:\htdocs\style.css'); ?>
/**
* 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 ) { { return false; } # Lees CSS bestand in # Verwijder CSS kommentaar # Verwijder alle enters en tabs uit de inhoud van het CSS bestand # Whitespaces rond bepaalde tekens verwijderen $sContent = preg_replace('/\s*({|}|;|:|,)\s*/', '$1', $sContent); # Verwijder alle dubbele spaties # Grijp alle {....} blokken { foreach( $aMatch[0] as $k => $v ) { # Verwijder laatste ";" van laatste statement in een blok 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
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|