У меня есть строка SQL, и мне нужно получить имя таблицы из основного значения «FROM». Мне нужно найти последнее событие «FROM», которое может иметь или не иметь дополнительных ограничений после него. Вот несколько способов, строка может выглядеть:Получить после последнего вхождения в строку с использованием регулярных выражений
$input = "SELECT title, (SELECT name FROM Contact WHERE name = 'foo') as name FROM Account WHERE title = 'president'";
$input = "SELECT title, (SELECT name FROM Contact WHERE name = 'foo') as name FROM Account LIMIT 1";
$input = "SELECT title, (SELECT name FROM Contact WHERE name = 'foo') as name FROM Account OFFSET 3";
$input = "SELECT title, (SELECT name FROM Contact WHERE name = 'foo') as name FROM Account ANYTHING_HERE_REALLY";
$input = "SELECT title, (SELECT name FROM Contact WHERE name = 'foo') as name FROM Account";
Ожидаемый результат для всех является: счета
От соскабливать форум любой играющий вокруг, это направление я иду, но я знаю, это неправильно.
preg_match('/.*FROM\s([^]]+)\sWHERE/', $input, $output);
Замечательно. Вы не единственный, кто вызвал беспокойство по поводу использования регулярного выражения в синтаксисе запроса, но это действительно для информационных целей, поэтому я не против, если по какой-то странной причине ничего не возвращается. Я ценю вас, глядя на факт. Это был именно то, чего я пытался добиться в течение последнего часа. – nateiler