-3

エラーが発生します、

Warning: preg_replace(): No ending delimiter '#' found

この行で、

$sql = preg_replace("\n#[^\n]*\n", "\n", $sql);

この関数について、

function split_sql($sql) {
    $sql = trim($sql);
    $sql = preg_replace("\n#[^\n]*\n", "\n", $sql);

    $buffer = array();
    $ret = array();
    $in_string = false;

    for($i=0; $i<strlen($sql)-1; $i++) {
        if($sql[$i] == ";" && !$in_string) {
            $ret[] = substr($sql, 0, $i);
            $sql = substr($sql, $i + 1);
            $i = 0;
        }

        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)) {
        $ret[] = $sql;
    }
    return($ret);
}
4

1 に答える 1

2

区切り文字は、英数字、空白以外の文字である必要があります。#このため、を区切り文字と見なしているため、別の区切り文字を探しても見つかりません。

試すpreg_replace("/\n#[^\n]*\n/","\n",$sql);

于 2013-01-21T16:21:23.813 に答える