PHP Regex для удаления комментариев при минимизации Javascript

Код:

$buffer = '
//Test
var url = \'http://test.com\';
var x = \'foo\'; // test
var myregex = \'/(*)?//\'';
echo preg_replace("/(?:\/\/.*)/", "", $buffer);

Результат:

var url = 'http://
var x = 'foo';
var myregex = '/(*)?`

Ожидаемый результат:

var url = 'http://test.com';
var x = 'foo';
var myregex = '/(*)?//'

Это первый шаг к минимизации JavaScript, но я не вижу решения для этого.

Любое предложение?

2

Решение

Делать это с RegEx было бы очень сложно.

С RegEx:

  • Вы должны использовать смотреть за утверждениями проверить, если // не было внутри последовательности строк, проверяя ' или же ",
  • Также может быть несколько строк в одной строке, например "http://", "https://", так что вам понадобятся вложенные утверждения.
  • Строки могут быть заключены в ' или же ", так что вы должны найти способ проверить это: "http://", 'https://'

Другой вариант

Другой вариант и наиболее подходящее решение — проходить строку за символом и сохранять набор логических переменных для отслеживания «состояния» строки кода. Например, отслеживайте нахождение внутри строки: if ($char == '"') { $inString = true; },

Выше приведен упрощенный пример. Когда вы собираетесь сделать это по-настоящему, вам, вероятно, лучше всего написать код ООП, чтобы проанализировать его и передать обработанную строку и текущий символ различным объектам, обрабатывающим разные типы кода. Это слишком широко, чтобы объяснить это здесь полностью ..

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]