Parse MS SQL identifiers
This commit is contained in:
parent
aa1bed7249
commit
b69f9b4a60
|
@ -41,12 +41,13 @@ if (!$error && $_POST) {
|
||||||
}
|
}
|
||||||
$commands = 0;
|
$commands = 0;
|
||||||
$errors = array();
|
$errors = array();
|
||||||
|
$parse = '[\'`"]' . ($jush == "pgsql" ? '|\\$.*\\$' : ($jush == "mssql" || $jush == "sqlite" ? '|\\[' : '')) . '|/\\*|-- |#'; //! ` and # not everywhere
|
||||||
while ($query != "") {
|
while ($query != "") {
|
||||||
if (!$offset && $jush == "sql" && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) {
|
if (!$offset && $jush == "sql" && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) {
|
||||||
$delimiter = $match[1];
|
$delimiter = $match[1];
|
||||||
$query = substr($query, strlen($match[0]));
|
$query = substr($query, strlen($match[0]));
|
||||||
} else {
|
} else {
|
||||||
preg_match('(' . preg_quote($delimiter) . '|[\'`"]' . ($jush == "pgsql" ? '|\\$.*\\$' : '') . '|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match
|
preg_match('(' . preg_quote($delimiter) . "|$parse|\$)", $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match
|
||||||
$found = $match[0][0];
|
$found = $match[0][0];
|
||||||
$offset = $match[0][1] + strlen($found);
|
$offset = $match[0][1] + strlen($found);
|
||||||
if (!$found && $fp && !feof($fp)) {
|
if (!$found && $fp && !feof($fp)) {
|
||||||
|
@ -56,7 +57,7 @@ if (!$error && $_POST) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($found && $found != $delimiter) { // find matching quote or comment end
|
if ($found && $found != $delimiter) { // find matching quote or comment end
|
||||||
while (preg_match('(' . ($found == '/*' ? '\\*/' : (ereg('-- |#', $found) ? "\n" : preg_quote($found) . "|\\\\.")) . '|$)s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES
|
while (preg_match('(' . ($found == '/*' ? '\\*/' : ($found == '[' ? ']' : (ereg('^-- |^#', $found) ? "\n" : preg_quote($found) . "|\\\\."))) . '|$)s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES
|
||||||
$s = $match[0][0];
|
$s = $match[0][0];
|
||||||
$offset = $match[0][1] + strlen($s);
|
$offset = $match[0][1] + strlen($s);
|
||||||
if (!$s && $fp && !feof($fp)) {
|
if (!$s && $fp && !feof($fp)) {
|
||||||
|
|
Loading…
Reference in a new issue