diff options
author | the_systech <the_systech@users.sourceforge.net> | 2001-09-24 17:26:36 +0000 |
---|---|---|
committer | the_systech <the_systech@users.sourceforge.net> | 2001-09-24 17:26:36 +0000 |
commit | 1871f5e2c0e5c667e4b9b11a316f0db64d728693 (patch) | |
tree | d96bd5a170b2b52c92988a33a9405c6fd4f2e363 /phpBB/includes | |
parent | bc14000a95e6e5d1ed49ac7bd5799a09c32f9d67 (diff) | |
download | forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar.gz forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar.bz2 forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar.xz forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.zip |
Seperated out sql parsing functions into a new file.
git-svn-id: file:///svn/phpbb/trunk@1069 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes')
-rw-r--r-- | phpBB/includes/sql_parse.php | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/phpBB/includes/sql_parse.php b/phpBB/includes/sql_parse.php new file mode 100644 index 0000000000..cc94437762 --- /dev/null +++ b/phpBB/includes/sql_parse.php @@ -0,0 +1,115 @@ +<?php +/*************************************************************************** +* sql_parse.php +* ------------------- +* begin : Thu May 31, 2001 +* copyright : (C) 2001 The phpBB Group +* email : support@phpbb.com +* +* $Id$ +* +****************************************************************************/ + +/*************************************************************************** + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + ***************************************************************************/ + +/*************************************************************************** +* +* These functions are mainly for use in the db_utilities under the admin +* however in order to make these functions available elsewhere, specifically +* in the installation phase of phpBB I have seperated out a couple of +* functions into this file. JLH +* +\***************************************************************************/ + +// +// remove_remarks will strip the sql comment lines out of an uploaded sql file +// +function remove_remarks($sql) +{ + $lines = explode("\n", $sql); + + // try to keep mem. use down + $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"; + } + // Trading a bit of speed for lower mem. use here. + $lines[$i] = ""; + } + } + + return $output; + +} + +// +// split_sql_file will split an uploaded sql file into single sql statements. +// Note: expects trim() to have already been run on $sql. +// +function split_sql_file($sql, $delimiter) +{ + // Split up our string into "possible" SQL statements. + $tokens = explode($delimiter, $sql); + // try to save memory. + $sql = ""; + $output = array(); + + // we don't actually care about the matches preg gives us. + $matches = array(); + + // this is faster than calling count($oktens) every time thru the loop. + $token_count = count($tokens); + for ($i = 0; $i < $token_count; $i++) + { + // Don't wanna add an empty string as the last thing in the array. + if (($i != ($token_count - 1)) || (strlen($tokens[$i] > 0))) + { + // This is the total number of single quotes in the token. + $total_quotes = preg_match_all("/'/", $tokens[$i], $matches); + // Counts single quotes that are preceded by an odd number of backslashes, + // which means they're escaped quotes. + $escaped_quotes = preg_match_all("/(?<!\\\\)(\\\\\\\\)*\\\\'/", $tokens[$i], $matches); + + $unescaped_quotes = $total_quotes - $escaped_quotes; + + // If the number of unescaped quotes is even, then the delimiter did NOT occur inside a string literal. + if (($unescaped_quotes % 2) == 0) + { + // It's a complete sql statement. + $output[] = $tokens[$i]; + // save memory. + $tokens[$i] = ""; + } + else + { + // it's not complete, so prepend it onto the next token and continue the loop as usual. + $tokens[$i + 1] = $tokens[$i] . ";" . $tokens[$i + 1]; + // save memory. + $tokens[$i] = ""; + } + } + } + + return $output; +} +?> |