就是將一個.sql 文件轉成一條條的sql數組,方便在程序中執行sql,雖然功能很是片面,不過剛剛好夠用。
以下是代碼
/**
* 讀取sql文件爲數組
* @param $sqlFile sql 文件路徑
* @param string $prefix 添加表前綴
* @return array|bool
*/
function get_sql_array($sqlFile, $prefix = '')
{
if (!file_exists($sqlFile)) return false;
$str = file_get_contents($sqlFile);
$str = preg_replace('/(--.*)|(\/\*(.|\s)*?\*\/)|(\n)/', '', $str);
if (!empty($prefix)) {
$str = preg_replace_callback(
"/(TABLE|INSERT\\s+?INTO|UPDATE|DELETE\\s+?FROM|SELECT.+?FROM|LEFT\\s+JOIN|JOIN|LEFT)([\\s]|[\\s`])+?(\\w+)([\\s`]|[\\s(])+?/is",
function ($matches) use ($prefix) {
return str_replace($matches[3], $prefix . $matches[3], $matches[0]);
},
$str);
}
$list = explode(';', trim($str));
foreach ($list as $key => $val) {
if( empty($val) ){
unset($list[$key]);
}else{
$list[$key].=';';
}
}
return array_values($list);
}
主要就是去掉下注釋,然後轉換成數組形式,還支持在導入SQL的同時加上表前綴。