Page 1 sur 1

Regex suppression de commentaires /* .... */ et //.....

Posté : 03 sept. 2019, 13:54
par finipe
Bonjour à tous !

Tout est dans le titre... Je travaille à minifier certains fichiers de mon site (je n'utilise pas NPM et node.js pour des raisons de simplicité, mon site n'est pas très gros).

La minification intervient automatiquement lorsque j'ai modifié le fichier, mais je ne parviens pas à trouver le bon REGEX pour virer les commentaires : /*......*/ dans les fichiers CSS, et //..... dans les fichiers JS.

J'ai écrit ceci pour le moment :

Code : Tout sélectionner

function Suppr_char($texte) { $texte = preg_replace("#/\*(?s:.*?)\*/|^\s*//.*#m", "", $texte); $texte = str_replace(array("\r\n", "\r", "\n", "\t", " "), "", $texte); $texte = str_replace("{ ", "{", $texte); $texte = str_replace(" }", "}", $texte); $texte = str_replace('; ', ';', $texte); $texte = str_replace(', ', ',', $texte); $texte = str_replace(' {', '{', $texte); $texte = str_replace('} ', '}', $texte); $texte = str_replace(': ', ':', $texte); $texte = str_replace(' ,', ',', $texte); $texte = str_replace(' ;', ';', $texte); return $texte; } function Minifier($fichier, $ext) { $contenu = @fopen("CSS/".$fichier.".".$ext, "r"); if($contenu) { while(($ligne = fgets($contenu, 4096)) !== false) $resultat .= Suppr_char($ligne); fclose($contenu); // Ecriture du fichier $file = "CSS/".$fichier.".min.".$ext; file_put_contents($file, $resultat); } else { error_log("[MINIFICATION] ERREUR"); } }



Ça fonctionne, sauf la première ligne de la fonction Suppr_char avec le preg_replace (que j'ai trouvé sur internet ailleurs).
Quelqu'un a une piste ? Merci !

Re: Regex suppression de commentaires /* .... */ et //.....

Posté : 03 sept. 2019, 15:35
par finipe
Bon eh bien finalement ça fonctionne, je sais pas trop pourquoi ni comment, mais ça fonctionne.

Le code final, un peu optimisé :

Code : Tout sélectionner

function Suppr_char($texte) { $texte = str_replace(array("\r\n", "\r", "\n", "\t", " "), "", $texte); $texte = preg_replace("#/\*(?s:.*?)\*/|^\s*//.*#m", "", $texte); $recherche = array("{ ", " }", "; ", " ;", ", ", " ,", " {", "} ", ": ", " :"); $remplace = array("{", "}", ";", ";", ",", ",", "{", "}", ":", ":"); $texte = str_replace($recherche, $remplace, $texte); return $texte; } function Minifier($fichier, $ext) { $dossier = strtoupper($ext)."/"; $contenu = @fopen($dossier.$fichier.".".$ext, "r"); if($contenu) { // Lecture de chaque ligne et ajout à la variable de sortie while(($ligne = fgets($contenu, 4096)) !== false) $resultat .= $ligne; fclose($contenu); // Suppression des caractères inutiles $resultat = Suppr_char($resultat); // Ecriture du fichier $file = $dossier.$fichier.".min.".$ext; file_put_contents($file, $resultat); } else { error_log("[MINIFICATION] ERREUR"); } }