REGEX: Cómo eliminar comentarios de javascripts, usando código PHP
¡Estoy combinando todos mis javascriupt en un archivo ordenado para reducir las solicitudes http! Estoy atrapado quitando los comentarios/* comments */
y// comments
. Mi nivel está muy por debajo de las cosas de minificación o análisis. Sé hacer cuerdas de macarrones. Algo más complejo que eso, no lo encontrarás en mi computadora o cocina, así que:
Mientras tanto, al combinarlo en un archivo, quiero eliminar todos los comentarios.
¿Cuál es la expresión regular correcta para esto?
<?php
header('Content-type: text/javascript');
$offset = 60 * 60 * 24; // Cache for a day
header ('Cache-Control: max-age=' . $offset . ', must-revalidate');
header ('Expires: ' . gmdate ("D, d M Y H:i:s", time() + $offset) . ' GMT');
ob_start("compress");
function compress($buffer) {
# NOT SURE, not all new lines are removed??
# remove tabs, spaces, newlines, etc.
$buffer = str_replace(array("\r\n", "\r", "\t", ' ', ' '), '', $buffer);
# WORKS !!!
# remove comments / XXXXXXX
$buffer = preg_replace('(// .+)', '', $buffer);
########################################################################
# !! STUCK HERE !! OUTPUT FILE LOOKS OK BUT WEBSITE DOESNT LOAD OK IF THIS IS ON
# remove comments / * XXX (enters etc) XXXX * /
# $buffer = preg_replace('#/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*/#s', '', $buffer);
########################################################################
return $buffer;
}
include('../file1.js');
include('../file2.js');
ob_end_flush();
?>
Sería genial si detectara y eliminara lo siguiente:
/* XXXX */
/*
XXXX
XXXX
*/
¡Eso es todo! No puedo hacer que funcione nomatter qué expresión regular utilizo incluso con esta increíble herramienta, donde ENCONTRÉ la combinación correcta para ser:
RegExp: /\/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*\//gs
pattern: \/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*\/
flags: gs