<?php
$files = file('sql.txt');
$str = $files[0];
preg_match('/\((.*?)\)/', $str, $match);
$f1 = $match['1'];
$x = explode(",", $f1);
$ff = [];
foreach($x as $f)
{
$f = str_replace('"', '', $f);
$f = trim($f);
$ff[] = $f;
}
preg_match('/VALUES \((.*?)\);/', $str, $match);
$f1 = $match['1'];
if(strpos($f1, '\\') !== false)
{
$f1 = str_replace('\\', '\\\\\\', $f1);
}
$s = '$arr=[' . $f1 . '];';
eval($s);
echo '[<br>';
foreach($arr as $k => $f)
{
$f = str_replace("'", '', $f);
$f = trim($f);
if(! isset($ff[$k])) continue;
echo '"' . $ff[$k] . '"=>' . "'" . $f . "',<br>";
}
echo "]<br>";
将一条有数据的SQL 转换为数组,主要用于编写单元测试。
示例SQL.txt,行尾带分号。
INSERT INTO "xxxx" ("f1", "f2", "f3", "f4", "f5", "f6") VALUES (1, 1, '{"xxxx": "2021.09.14.11"}', '[]', '2021-10-07 18:43:48', '2021-10-08 20:35:56');