我想从带有大量插入的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
文件中的值和表名。这些值只能是整个字符串。
答案 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]);
}