Réduire la sortie HTML finale en utilisant des expressions régulières avec CodeIgniter

Des pages Google vous suggère de rapetisser HTML, c'est de supprimer tous les espaces inutiles.
CodeIgniter n'ont la particularité de giziping de sortie ou il peut être fait par .htaccess.
Mais je voudrais aussi supprimer les espaces inutiles à partir de la dernière sortie HTML.

J'ai joué un peu avec ce morceau de code pour le faire, et il semble fonctionner.
Ce n'est en effet résultat en HTML qui est sans excès espaces et supprime les autres onglet mise en forme.

class Welcome extends CI_Controller 
{
    function _output()
    {
        echo preg_replace('!\s+!', ' ', $output);
    }

    function index(){
    ...
    }
}

Le problème est que il peut y avoir des balises comme
<pre>,<textarea>etc.. qui peuvent être séparés par des espaces et une expression régulière doit les supprimer.
Alors, comment puis-je enlever l'excédent de l'espace sur le HTML final, sans effectuer d'espaces ou de mise en forme pour ces certaines balises à l'aide d'une expression régulière?

Grâce à @Alan Moore eu la réponse, cela a fonctionné pour moi

echo preg_replace('#(?ix)(?>[^\S ]\s*|\s{2,})(?=(?:(?:[^<]++|<(?!/?(?:textarea|pre)\b))*+)(?:<(?>textarea|pre)\b|\z))#', ' ', $output);

ridgerunner a fait un très bon travail de l'analyse de cette expression régulière. J'ai fini à l'aide de sa solution. Bravo à ridgerunner.

source d'informationauteur Aman | 2011-03-15