2014-02-14 34 views
0

我要取的值從SQL文件有很多插入的是這樣的:正則表達式PHP讓MySQL插入值

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); 

完整的SQL文件在this pastebin提供。

我已經做了這個遠preg_match_all('/insert into "([a-zA-Z]+)" values\((.*)[\);]{0}/isu'),但它沒有考慮從Values(.*)\r\n它不檢測它。

我需要.sql文件中的值和表名。值可以只是整個字符串。

+1

你爲什麼不包括\ r \ n在您的正則表達式? – jraede

+3

爲什麼不把表導入數據庫然後導出你想要的? – cmorrissey

+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]); 
} 
+0

是的,這工作。謝謝 –