Muszę przekonwertować komentarze pojedynczej linii (//...)
, aby zablokować komentarze (/*...*/)
. Osiągnąłem to prawie w poniższym kodzie; jednak potrzebuję funkcji do pominięcia dowolnego komentarza pojedynczego wiersza, który już znajduje się w komentarzu bloku. Obecnie pasuje do dowolnego komentarza pojedynczego wiersza, nawet jeśli komentarz pojedynczego wiersza znajduje się w komentarzu blokowym.Konwersja pojedynczej linii Komentarze do blokowania komentarzy
## 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
);
}
Nie martwię się, jeśli $ x = "string // z ukośnikami"; staje się $ x = "jakiś ciąg/* z ukośnikami * /" ;. To byłoby naprawdę korzystne. Z drugiej strony dodałem zmiany, które zasugerowałeś i otrzymałeś błąd kompilacji. Uwaga: preg_replace_callback() [function.preg zastępowania-zwrotna] Opracowanie nieudane: lookbehind twierdzenie nie jest stała długość przy przesunięciu 6 C: \ wamp \ WWW \ LessCSS \ \ strony czyszczenia \ Inc \ util.php online 29 – roydukkey
Funkcja sprawdzania przez PHP obsługuje tylko asercje o stałej długości. Oznacza to, że nie można napisać wyrażeń regularnych dopasowanych do niezdefiniowanej liczby znaków, które wykluczają użycie * i?. Więcej informacji tutaj: http://www.php.net/manual/en/regexp.reference.assertions.php –
dzięki za głowy do góry. powinien teraz działać. –