Вход Регистрация
Файл: install/SQLParser.php
Строк: 32
<?php

/*
 * Парсер SQL-запросов
 */

class SQLParser {

    
/*
     * Выборка SQL-запросов из файла
     * @param string $file
     * @return array
     */

    
public static function getQueriesFromFile($file) {

        
$sql file_get_contents($file);

        return 
self::getQueries($sql);

    }

    
/*
     * Разбор SQL-строки на запросы
     * @param string $sql
     * @return array
     */

    
public static function getQueries($sql) {

        
$sql trim($sql);

        
$buffer = [];

        
$query = [];

        
$in_string false;

        
$strlen strlen($sql);

        for (
$i 0$i $strlen 1$i++) {

            if (isset(
$sql[$i]) && $sql[$i] == ";" && !$in_string) {

                
$query[] = substr($sql0$i);
                
$sql substr($sql$i 1);
                
$i 0;

            }

            if (!isset(
$sql[$i])) continue;

            if (
$in_string && ($sql[$i] == $in_string) && $buffer[1] != "\") {

                
$in_string = false;

            } elseif (!
$in_string && ($sql[$i] == '"' || $sql[$i] == "'") && (!isset($buffer[0]) || $buffer[0] != "\")) {

                
$in_string = $sql[$i];

            }

            if (isset(
$buffer[1])) {

                
$buffer[0] = $buffer[1];

            }

            
$buffer[1] = $sql[$i];

        }

        if (!empty(
$sql)) {

            
$query[] = $sql;

        }

        return 
$query;

    }

}
Онлайн: 3
Реклама