private function _parseUrl() { $script_name = $_SERVER["SCRIPT_NAME"]; //获取当前文件的路径 $url = $_SERVER["REQUEST_URI"]; //获取完整的路径,包含"?"之后的字符串 //去除url包含的当前文件的路径信息 if ($url && @strpos($url, $script_name, 0) !== false) { $url = substr($url, strlen($script_name)); } else { $script_name = str_replace(basename($_SERVER["SCRIPT_NAME"]), '', $_SERVER["SCRIPT_NAME"]); if ($url && @strpos($url, $script_name, 0) !== false) { $url = substr($url, strlen($script_name)); } } //第一个字符是'/',则去掉 if ($url[0] == '/') { $url = substr($url, 1); } //去除问号后面的查询字符串 if ($url && false !== ($pos = @strrpos($url, '?'))) { $url = substr($url, 0, $pos); } //去除后缀 if ($url && ($pos = strrpos($url, $this->appConfig['URL_HTML_SUFFIX'])) > 0) { $url = substr($url, 0, $pos); } $flag = 0; //获取模块名称 if ($url && ($pos = @strpos($url, $this->appConfig['URL_MODULE_DEPR'], 1)) > 0) { self::$module = substr($url, 0, $pos); //模块 $url = substr($url, $pos + 1); //除去模块名称,剩下的url字符串 $flag = 1; //标志可以正常查找到模块 } else { //如果找不到模块分隔符,以当前网址为模块名 self::$module = $url; } $flag2 = 0; //用来表示是否需要解析参数 //获取操作方法名称 if ($url && ($pos = @strpos($url, $this->appConfig['URL_ACTION_DEPR'], 1)) > 0) { self::$action = substr($url, 0, $pos); //模块 $url = substr($url, $pos + 1); $flag2 = 1; //表示需要解析参数 } else { //只有可以正常查找到模块之后,才能把剩余的当作操作来处理 //因为不能找不到模块,已经把剩下的网址当作模块处理了 if ($flag) { self::$action = $url; } } //解析参数 if ($flag2) { $param = explode($this->appConfig['URL_PARAM_DEPR'], $url); $param_count = count($param); for ($i = 0; $i < $param_count; $i = $i + 2) { $_GET[$i] = $param[$i]; if (isset($param[$i + 1])) { if (!is_numeric($param[$i])) { $_GET[$param[$i]] = $param[$i + 1]; } $_GET[$i + 1] = $param[$i + 1]; } } } }
function url_parse_ext() { EcApp::$module = trim($_GET['m']); EcApp::$action = trim($_GET['a']); }