帮忙分析一下这段PHP程序里正则表达式的含义这段程序是用来分析SQL语句的 $flag = PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY;
$tokens = preg_split('/(\'(?:(?:\\\\\')|(?:\'\'))*(?:[^\']+(?:(?:\\\\\')|(?:\'\'))*)+\')/', $query, -1, $flag);
$sql = "";
foreach ($tokens as $token) {
if (preg_match('/^\'.*\'$/', $token)) {
$sql .= $token;
continue;
}
if (strpos($token, '?') !== false) {
$sub_tokens = preg_split('/(\?)/', $token, -1, $flag);
foreach ($sub_tokens as $sub_token) {
if ($sub_token == '?') {
$replace = array_shift($args);
if ($replace == null) {
trigger_error("The number of place holder token is not equal the number of data", E_USER_ERROR);
}
mysql_real_escape_string($replace, $this->_connection);
$sql .= "'$replace'";
}
else {
$sql .= $sub_token;
}
}
}
else {
$sql .= $token;
}
}
$tokens = preg_split('/(\'(?:(?:\\\\\')|(?:\'\'))*(?:[^\']+(?:(?:\\\\\')|(?:\'\'))*)+\')/', $query, -1, $flag);
$sql = "";
foreach ($tokens as $token) {
if (preg_match('/^\'.*\'$/', $token)) {
$sql .= $token;
continue;
}
if (strpos($token, '?') !== false) {
$sub_tokens = preg_split('/(\?)/', $token, -1, $flag);
foreach ($sub_tokens as $sub_token) {
if ($sub_token == '?') {
$replace = array_shift($args);
if ($replace == null) {
trigger_error("The number of place holder token is not equal the number of data", E_USER_ERROR);
}
mysql_real_escape_string($replace, $this->_connection);
$sql .= "'$replace'";
}
else {
$sql .= $sub_token;
}
}
}
else {
$sql .= $token;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货