[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск preg_match_all
romanet
Привет всем! У меня возникла маленькая проблемка со знаниями регулярных выражений надеюсь вы мне поможете в этом. У меня есть файл и в нем содержатся sql запросы по созданию таблиц. Мне нужно через preg_match_all найти все эти записи отдельно и помести в массив чтобы в дальнейшем я мог проводить запрос в бд отдельно с каждым sql выражением. Проблема стоит в том как именно должен выглядеть выражение preg_match_all, чтобы оно вынимало все запросы типа

CREATE TABLE IF NOT EXISTS `admin_assert` (
`assert_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Assert ID',
`assert_type` varchar(20) NOT NULL DEFAULT '' COMMENT 'Assert Type',
`assert_data` text COMMENT 'Assert Data',
PRIMARY KEY (`assert_id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Admin Assert Table' AUTO_INCREMENT=1 ;




Спустя 32 минуты, 47 секунд (25.08.2011 - 10:48) ApuktaChehov написал(а):
Нужно найти что-нибудь, что повторяется везде, перед и после каждого запроса. По этому и ориентироваться. Иначе будет офигенно сложное выражение, т.к. запросы все разные, и писать выражение под каждый запрос очень трудоемкая задача.

Спустя 5 минут, 53 секунды (25.08.2011 - 10:54) romanet написал(а):
CREATE TABLE IF NOT EXISTS начало и конец ;

Спустя 3 минуты, 51 секунда (25.08.2011 - 10:58) ApuktaChehov написал(а):
Не понял..

Спустя 4 минуты, 9 секунд (25.08.2011 - 11:02) romanet написал(а):
я написал токо что так работает preg_match_all('|(CREATE TABLE IF NOT EXISTS)(.*)(wink.gif|Uis' , $subject, $matches);

Спустя 8 минут, 41 секунда (25.08.2011 - 11:11) ApuktaChehov написал(а):
romanet, я об этом и говорю, что таким дело вы только CREATE TABLE IF NOT EXISTS найдете. Но ведь запросы у вас ведь разные? По этому нужно искать что то одинаковое перед и после всех запросов. Например в php: мы знаешь что все запросы выполняются стандартной функцией mysql_query, соответственно ищем эту строку в тексте, а после скобочки и кавычек уже пойдет запрос и закончится опять же кавычкой и скобкой.

Теперь зная что есть до запроса и после, можно построить регулярку, которая найдет все запросы.

Спустя 7 минут, 38 секунд (25.08.2011 - 11:18) romanet написал(а):
Моя проблема немножко другая мне нужно найти все запросы в тексте они начинаются на CREATE TABLE IF NOT EXISTS и закинчеються на; сначала с таким выражением оно працюэ норм. Но до конца то бросает уже абсурт. К сожалению я никакой в регулярных выражениях. Если вы знаете как это сделать скиньте пример

Спустя 1 час, 2 минуты, 39 секунд (25.08.2011 - 12:21) ApuktaChehov написал(а):
preg_match_all('/CREATE TABLE IF NOT EXISTS.*;/i', $subject, $matches);

Спустя 14 минут, 25 секунд (25.08.2011 - 12:35) romanet написал(а):
спс но то что написал я тоже коректно работает но большое спс за помощь и за то что не остались равнодушным к моей проблеме!:)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.