Ho trovato questa funzione molto utile, può essere utilizzata via buffer per ripulire l'html da tutti gli spazi non necessari.

Io la utilizzo subito prima di effettuare il caching dei template html di uno script a cui sto lavorando (anche perchè eseguire questa regexp in realtime rallenterebbe parecchio il parsing php).
La funzione è questa:
Codice PHP:
function sanitize_output($buffer){
    
$search = array(
        
'/\>[^\S ]+/s'//strip whitespaces after tags, except space
        
'/[^\S ]+\</s'//strip whitespaces before tags, except space
        
'/(\s)+/s'  // shorten multiple whitespace sequences
        
);
    
$replace = array('>','<','\\1');
    
$buffer preg_replace($search$replace$buffer);
    return 
$buffer;

Il problema è che, ovviamente, esegue la conversione anche del contenuto all'intero dei tag script e style, cosa che vorrei evitare perchè da generalmente problemi.

Se per esempio ho uno script così:
codice:
<script type="text/javascript">
<!--
richiamo_una_mia_bella_funzioncina();
//-->
</script>
lui me lo riduce così :
codice:
<script type="text/javascript"></script>
e lo script non funzionerà perchè la riga di codice è commentata.

C'è qualcuno che può darmi una mano a migliorare questa funzione considerando che io e le regular expression non andiamo proprio d'accordo (o meglio, posso tranquillamente dire che che ci schifiamo reciprocamente)?