Я борюсь с регулярным выражением в PHP:
У меня есть ряд SQL -запросов. Теперь я хотел бы извлечь имена переменных (имена столбцов) в этих запросах. Он должен возвращать массив (preg_match_all ())
Поскольку запросы довольно просты, идеального решения не требуется. Единственные условия, которые я хотел бы проверить, следующие:
- возвращает все строки (a-zA-Z0-9) любой длины, которые
- начинаются сразу после одного из следующих выражения: «ГДЕ», «И», «ИЛИ», «ГДЕ (», «И (», «ИЛИ (» и
- заканчиваются прямо перед одним из следующих выражений: "=", "> "," <"," LIKE "," NOT ") </li>
- все эти выражения должны быть без учета регистра.
Я играл со следующим онлайн-тестером регулярных выражений: https://www.phpliveregex.com/#tab -preg-match-all . Однако самое близкое, что я получил, было это, так как я не знаю, как получить несколько совпадений:
preg_match_all('/^[where|and|or|\(]* ([a-zA-Z0-1]*)[ |=|<|<=|>|>=|or|in]*.*$/', $input_lines, $output_array);
Пример SQL -запросов:
SHOULD RETURN
WHERE var1=1 AND var2=1 => var1; var2
WHERE var2 IN (1, 2, 3) OR var3=2 => var2; var3
WHERE (var4 like '%test%' and var5 NOT LIKE '%test%') => var4; var5
WHERE VAR6 = 'test' AnD var7='test2' => VAR6; var7