Devo convertire i commenti a riga singola (//...)
per bloccare i commenti (/*...*/)
. Ho quasi compiuto questo nel seguente codice; tuttavia, ho bisogno che la funzione salti ogni singolo commento di linea sia già in un commento di blocco. Attualmente corrisponde a qualsiasi commento a riga singola, anche quando il commento a riga singola è in un commento a blocco.Converti commenti a riga singola per bloccare commenti
## Convert Single Line Comment to Block Comments
function singleLineComments(&$output) {
$output = preg_replace_callback('#//(.*)#m',
create_function(
'$match',
'return "/* " . trim(mb_substr($match[1], 0)) . " */";'
), $output
);
}
Beh, non mi preoccupo se $ x = "qualche stringa // con barre"; diventa $ x = "qualche stringa/* con barre * /" ;. Questo sarebbe in realtà preferito. D'altra parte, ho aggiunto le modifiche che hai suggerito e ottenuto un errore di compilazione. Avviso: preg_replace_callback() [function.preg-replace-callback]: Compilazione non riuscita: l'asserzione lookbehind non è una lunghezza fissa all'offset 6 in C: \ wamp \ www \ LessCSS \ Site \ cleaner \ inc \ util.php on line 29 – roydukkey
Il look-behind di PHP supporta solo asserzioni di lunghezza fissa. Ciò significa che non puoi scrivere un'espressione regolare che corrisponda a un numero indefinito di caratteri, il che esclude l'uso di * e?. Maggiori informazioni qui: http://www.php.net/manual/en/regexp.reference.assertions.php –
grazie per l'heads up. dovrebbe funzionare ora –