- PVSM.RU - https://www.pvsm.ru -
Как часть программы анализа исходных кодов было необходимо вырезать из JavaScript все строковые литералы. Сначала на PHP был реализован state based парсер, но это было медленно и уныло. А сделать быстро получилось с помощью регулярных выражений.
Источником вдохновения послужил пост [1] на stackoverflow. В результате получилось следующее решение:
return preg_replace('/(
"[^"\\]*(?:\\.[^"\\]*)*" # match double quoted string
|
'[^'\\]*(?:\\.[^'\\]*)*' # match single quoted string
|
(?s:\/\*.*?\*\/) # multiline comments
|
\/\/.*?\n # singleline comments
|
string.replace\(\/[^\/\\]*(?:\\.[^\/\\]*)*\/ # an JS regexp
)/x', '', $str);
И это во много раз быстрее анализатора, 50-ть строчек которого канули в Лету.
Автор: qMBQx8GH
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/8277
Ссылки в тексте:
[1] пост: http://stackoverflow.com/questions/5695240/php-regex-to-ignore-escaped-quotes-within-quotes
Нажмите здесь для печати.