<?php /** * @package uForum * @file includes/sql_parse.php * @version $Id$ * @copyright 2009(c) PioDer <pioder@wp.pl> * @link http://pioder.gim2przemysl.int.pl/ * @license GNU GPL v3 * @note Originally, phpMyAdmin function **/ function remove_comments(&$output) { $lines = explode("\n", $output); $output = ""; $linecount = count($lines); $in_comment = false; for($i = 0; $i < $linecount; $i++) { if( preg_match("/^\/\*/", preg_quote($lines[$i])) ) { $in_comment = true; } if( !$in_comment ) { $output .= $lines[$i] . "\n"; } if( preg_match("/\*\/$/", preg_quote($lines[$i])) ) { $in_comment = false; } } unset($lines); return $output; } function remove_remarks($sql) { $lines = explode("\n", $sql); $sql = ""; $linecount = count($lines); $output = ""; for ($i = 0; $i < $linecount; $i++) { if (($i != ($linecount - 1)) || (strlen($lines[$i]) > 0)) { if ($lines[$i][0] != "#") { $output .= $lines[$i] . "\n"; } else { $output .= "\n"; } $lines[$i] = ""; } } return $output; } function split_sql_file($sql) { $delimiter = ';'; $tokens = explode($delimiter, $sql); $sql = ""; $output = array(); $matches = array(); $token_count = count($tokens); for ($i = 0; $i < $token_count; $i++) { if (($i != ($token_count - 1)) || (strlen($tokens[$i] > 0))) { $total_quotes = preg_match_all("/'/", $tokens[$i], $matches); $escaped_quotes = preg_match_all("/(?<!\\\\)(\\\\\\\\)*\\\\'/", $tokens[$i], $matches); $unescaped_quotes = $total_quotes - $escaped_quotes; if (($unescaped_quotes % 2) == 0) { $output[] = $tokens[$i]; $tokens[$i] = ""; } else { $temp = $tokens[$i] . $delimiter; $tokens[$i] = ""; $complete_stmt = false; for ($j = $i + 1; (!$complete_stmt && ($j < $token_count)); $j++) { $total_quotes = preg_match_all("/'/", $tokens[$j], $matches); $escaped_quotes = preg_match_all("/(?<!\\\\)(\\\\\\\\)*\\\\'/", $tokens[$j], $matches); $unescaped_quotes = $total_quotes - $escaped_quotes; if (($unescaped_quotes % 2) == 1) { $output[] = $temp . $tokens[$j]; $tokens[$j] = ""; $temp = ""; $complete_stmt = true; $i = $j; } else { $temp .= $tokens[$j] . $delimiter; $tokens[$j] = ""; } } } } } return $output; } ?>