[RESOLU] Regex suppression de commentaires /* .... */ et //.....

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Regex suppression de commentaires /* .... */ et //.....

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

par finipe » 03 sept. 2019, 15:35

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"); } }

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

par finipe » 03 sept. 2019, 13:54

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 !