Спустя 9 минут, 47 секунд (8.10.2009 - 11:40) glock18 написал(а):
а какие составляющие собственно интересуют? какая детальность то есть...
Спустя 50 минут, 41 секунда (8.10.2009 - 12:30) Nikitian написал(а):
Тип запроса, параметры, переданные ему (массив "параметр"=>"значение").
Спустя 35 минут, 56 секунд (8.10.2009 - 13:06) glock18 написал(а):
ну скажем, тип запроса, видимо, (select/update/insert/replace и т.д. т.п.) можно определить достаточно просто. хотя бы substr_compare по первым n символов.
select вообще лучше по-словно парсить, если переписывать влом. ибо параметров уж очень много может быть понапихано в разных местах.
для запросов, использующих set, можно попробовать регулярку типа
/([\w\d]+)\s*=\s*('?[\w\d]*'?)/
in в условии вылетает в трубу. усложнять то есть надо будет.
для запросов с value/values что-то типа
/(|value|values|,)\s*\((.*?)\)/
первая "скобочка" для того, чтобы определить что будет в скобках - названия полей или значения. пусто - значит названия полей, иначе значения.
запросы insert/replace+select тоже в трубу.
вообще конечно лучше, если переписывать совсем влом, то проходить по-словно, и выписывать оттуда все слова, не считающиеся ключевыми. если ключевых слов немного будет, то мусор собираться будет, конечно. но его можно и разобрать в принципе при необходимости.
select вообще лучше по-словно парсить, если переписывать влом. ибо параметров уж очень много может быть понапихано в разных местах.
для запросов, использующих set, можно попробовать регулярку типа
/([\w\d]+)\s*=\s*('?[\w\d]*'?)/
in в условии вылетает в трубу. усложнять то есть надо будет.
для запросов с value/values что-то типа
/(|value|values|,)\s*\((.*?)\)/
первая "скобочка" для того, чтобы определить что будет в скобках - названия полей или значения. пусто - значит названия полей, иначе значения.
запросы insert/replace+select тоже в трубу.
вообще конечно лучше, если переписывать совсем влом, то проходить по-словно, и выписывать оттуда все слова, не считающиеся ключевыми. если ключевых слов немного будет, то мусор собираться будет, конечно. но его можно и разобрать в принципе при необходимости.