![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
我在看开源代码时搞不清正则表达式中为什么有# #i的形式,井号在前后加上i 又是什么意思?
function clean_string($str, $filter = "STANDARD") {
global $sugar_config;
$filters = Array(
"STANDARD" => "#[^A-Z0-9\-_\.\@]#i",
"STANDARDSPACE" => "#[^A-Z0-9\-_\.\@\ ]#i",
"FILE" => "#[^A-Z0-9\-_\.]#i",
"NUMBER" => "#[^0-9\-]#i",
"SQL_COLUMN_LIST" => "#[^A-Z0-9,_\.]#i",
"PATH_NO_URL" => "#://#i",
"SAFED_GET" => "#[^A-Z0-9\@\=\&\?\.\/\-_~]#i", /* range of allowed characters in a GET string */
"UNIFIED_SEARCH" => "#[\\x00]#", /* cn: bug 3356 & 9236 - MBCS search strings */
"AUTO_INCREMENT" => "#[^0-9\-,\ ]#i",
"ALPHANUM" => "#[^A-Z0-9\-]#i",
);
if (preg_match($filters[$filter], $str)) {
if (isset($GLOBALS['log']) && is_object($GLOBALS['log'])) {
$GLOBALS['log']->fatal("SECURITY: bad data passed in; string: {$str}");
}
die("Bad data passed in; Return to Home");
}
else {
return $str;
}
}

