123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <?php
-
-
-
-
-
-
-
-
-
-
-
-
-
- namespace util;
-
-
- class Sql
- {
-
-
- public static function getSqlFromFile($sql_file = '', $string = false, $replace = [])
- {
- if (!file_exists($sql_file)) {
- return false;
- }
-
-
- $handle = self::read_file($sql_file);
-
-
- $handle = self::parseSql($handle, $string, $replace);
-
- return $handle;
- }
-
-
-
- public static function parseSql($content = '', $string = false, $replace = [])
- {
-
- $from = '';
-
- $to = '';
-
-
- if (!empty($replace)) {
- $to = current($replace);
- $from = current(array_flip($replace));
- }
-
- if ($content != '') {
-
- $pure_sql = [];
-
-
- $comment = false;
-
-
- $content = str_replace(["\r\n", "\r"], "\n", $content);
- $content = explode("\n", trim($content));
-
-
- foreach ($content as $key => $line) {
-
- if ($line == '') {
- continue;
- }
-
-
- if (preg_match("/^(#|--)/", $line)) {
- continue;
- }
-
-
- if (preg_match("/^\/\*(.*?)\*\//", $line)) {
- continue;
- }
-
-
- if (substr($line, 0, 2) == '/*') {
- $comment = true;
- continue;
- }
-
-
- if (substr($line, -2) == '*/') {
- $comment = false;
- continue;
- }
-
-
- if ($comment) {
- continue;
- }
-
-
- if ($from != '') {
- $line = str_replace('`' . $from, '`' . $to, $line);
- }
-
-
- array_push($pure_sql, $line);
- }
-
-
- if ($string) {
- return implode("", $pure_sql);
- }
-
-
- $pure_sql = implode("\n", $pure_sql);
- $pure_sql = explode(";\n", $pure_sql);
- return $pure_sql;
- } else {
- return $string == true ? '' : [];
- }
- }
-
-
-
- public static function read_file($filename)
- {
- $content = '';
- if (function_exists('file_get_contents')) {
- @$content = file_get_contents($filename);
- } else {
- if (@$fp = fopen($filename, 'r')) {
- @$content = fread($fp, filesize($filename));
- @fclose($fp);
- }
- }
- return $content;
- }
- }
|