<?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
?>