Afficher et compresser du CSS en PHP
Pour un script je voulais créer du CSS dynamiquement en PHP. Donc on doit déclarer un header pour dire qu’on envoie du CSS au navigateur:
header("Content-type: text/css");
Ensuite pour faire plus propre, je modifie l’extension du fichier pour avoir .css et pas .php:
RewriteEngine on Options +FollowSymlinks RewriteRule ^(.+)\.css$ $1.php [QSA]
Ainsi le CSS généré paraitra comme un fichier CSS comme les autre ensuite pour le compressé j’ai donc décidé d’utiliser ob_start() qui va mettre en tampon les données écrites après celle si et ob_end_flush() qui permet d’arrêter la mise en tampon et d’envoyer les données au navigateur.
Mais la pour le moment ça sert pas à grand chose. On va donc passé un paramètre à la fonction ob_start() qui sera le nom d’une fonction à exécuter que j’ai appelé: « css_compress »:
ob_start('css_compress'); /* Le code CSS ici sera modifié */ ob_end_flush();
Ainsi tout le code qui sera entre les deux fonctions sera modifié par la fonction passé en paramètre qui est:
function css_compress($buffer) { $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; }
Rien de plus simple^^.
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.