Writerim
@Writerim
Заполнить позже...

Как правильно написать регулярное выражение?

Подскажите как правильно написать регулярное.
Необходимо на выходе получить WHERE.

$RegExr = '/^(SELECT+)(.*)(FROM+)(.*)(WHERE*)(.*)(LIMIT*)(.*)([0-9]*)(.*)([0-9]*)$/';
		
		if( preg_match( $RegExr , $Sql, $Match ) ) {


Я в регулярках не силен, но у меня простые запросы отрабатывают, а вложенные если есть, то выдает примерно следующее

array(6) {
  ["Operator"]=>
  string(6) "SELECT"
  ["Fields"]=>
  string(518) " * FROM `table1` LEFT JOIN  `table2`  ON  `table1`.`id` = `table2`.`id`  WHERE  `table2`.`id` = 213  AND  `table1`.`id` IN(SELECT id"
  ["From"]=>
  string(4) "FROM"
  ["Table"]=>
  string(7) "`table1`"
  ["Where"]=>
  string(85) "`field` = '100' )  AND  `table2`.`in_path` = 0  ORDER BY `table1`.`about` ASC"
  ["Limit"]=>
  string(11) "LIMIT 0,100"
}
  • Вопрос задан
  • 2276 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
/\s+WHERE\s+(.*?)\s+(?:GROUP|ORDER|LIMIT|PROCEDURE|INTO|FOR)\s/i
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SashaSkot
Специалист широкого профиля
RegExr = '/SELECT.*?WHERE(.*?)/';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы