Мне нужно преобразовать приложение из PHP 4 в приложение PHP 7. В частности, я должен исправить проблему, в которой переменные, поступающие из форм HTML, не определены явно на целевой странице, перехваченной POST или REQUEST. Я собираюсь сделать это вручную, но сначала мне нужно их найти.
Для этого я хотел написать регулярное выражение, которое проверяет, была ли переменная PHP ранее определена на странице. Мне удалось сделать это с помощью обратных ссылок и неограниченного просмотра (некоторые языки позволяют это), но я не могу управлять многострочными комментариями /…/. Мне нужно пропустить их в поиске позади.
Я смог пропустить комментарий типа строки // … и записать содержимое комментариев, но не выходить за его пределы, пропуская полностью: объявление переменной перед /../ не соответствует регулярному выражению.
Я использую PowerGrep 4 в качестве движка регулярных выражений.
Здесь мой неполный регулярное выражение, он использует обратные ссылки и вложенные lookbehinds:
(?<!(?<!//.*)\1[\s]*\=[\s]*.*;[^\*]*[^/]*)(\$\b(?:[^\_])[a-zA-Z-_\d]+\b)(?![\s]*[\=]{1}[^\=])
ПРИМЕР: дан код:
blabla $var /* blabla / * $var = 2 * / blabla */ $var
он должен соответствовать $ var дважды до и после комментария, игнорируя определение внутри комментария.
Также учтите следующее:
blabla $var blabla $var = 2 /* blabla / * $var * / blabla */ $var
должен соответствовать только первому $ var, потому что только первому вхождению $ var не предшествует определение переменной.
В настоящее время я могу создать регулярное выражение, которое может либо вернуться к проверке соответствия назначению, даже если оно находится внутри многострочных комментариев (WRONG), либо игнорировать назначение внутри комментариев, но не может обнаружить какое-либо назначение ДО многострочного комментария, что опять неверно.
Я не могу найти способ получить оба вышеупомянутых поведения одновременно.
У кого-нибудь есть решение или другие идеи по моей проблеме?
Задача ещё не решена.
Других решений пока нет …