Php 使用'时出错#';符号在';preg-replace()';功能
我犯了个错误Php 使用'时出错#';符号在';preg-replace()';功能,php,preg-replace,delimiter,Php,Preg Replace,Delimiter,我犯了个错误 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(
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);
}
函数拆分\u sql($sql){
$sql=trim($sql);
$sql=preg_replace(“\n#[^\n]*\n”、“\n”、$sql);
$buffer=array();
$ret=array();
$in_string=false;
对于($i=0;$i而言,分隔符必须是非字母数字、非空白字符。因此,它将#
视为分隔符,因此会查找另一个分隔符,但找不到它
尝试preg\u replace(“/\n#[^\n]*\n/”,“\n”,$sql)
@rae1n这是问题的标题。@rae1n我们是否要争论语义?这是OP出现问题的原因,也是它不能按预期工作的原因。您希望出现什么错误?OPs代码不会返回任何有助于调试的有效错误。我认为OP应该再努力一点,让其他人可以帮助解决这个问题。