Код:
$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, но я не вижу решения для этого.
Любое предложение?
Делать это с RegEx было бы очень сложно.
//
не было внутри последовательности строк, проверяя '
или же "
,"http://", "https://"
, так что вам понадобятся вложенные утверждения.'
или же "
, так что вы должны найти способ проверить это: "http://", 'https://'
Другой вариант и наиболее подходящее решение — проходить строку за символом и сохранять набор логических переменных для отслеживания «состояния» строки кода. Например, отслеживайте нахождение внутри строки: if ($char == '"') { $inString = true; }
,
Выше приведен упрощенный пример. Когда вы собираетесь сделать это по-настоящему, вам, вероятно, лучше всего написать код ООП, чтобы проанализировать его и передать обработанную строку и текущий символ различным объектам, обрабатывающим разные типы кода. Это слишком широко, чтобы объяснить это здесь полностью ..
Других решений пока нет …