正则表达式php获取mysql插入值

时间:2014-02-14 19:27:36

标签: php mysql regex

我想从带有大量插入的sql文件中获取值:

INSERT INTO "Messages" VALUES(7662,1,7333,'#foxy.giulia/$marcobonetti7;f966f2547124846f','marcobonetti7','marcobonetti7',NULL,X'6DF3228A75EEF69EB124C51BD0CA6EB7F3C35B33DC8062F479B60AC80442C21A','marcobonetti7',1386795144,61,NULL,0,NULL,NULL,NULL,NULL,'Domani durante il giorno sei a casa?',NULL,NULL,NULL,2,NULL,3,4,1,NULL,NULL,NULL,1198575,3063654961,309438692,NULL,NULL,NULL,NULL);

this pastebin中提供了完整的SQL文件。

我已做到这一点preg_match_all('/insert into "([a-zA-Z]+)" values\((.*)[\);]{0}/isu'),但它没有考虑来自\r\n的帐户Values(.*)而且它没有检测到它。

我需要.sql文件中的值和表名。这些值只能是整个字符串。

1 个答案:

答案 0 :(得分:0)

此正则表达式将表名称和整个值列表匹配为字符串:

preg_match_all('/insert into "([a-zA-Z]+)" values\((.*?)\);/isu', $string, $matches, PREG_SET_ORDER);

之后,您可以使用以下方法拆分值:

foreach ($matches as $key => $match) {
    $matches[$key][2] = explode(',', $match[2]);
}