php 網址解析

	
/*
'URL_REWRITE_ON' => false,//是否開啓重寫,true開啓重寫,false關閉重寫	
'URL_MODULE_DEPR' => '/',//模塊分隔符,一般不需要修改
'URL_ACTION_DEPR' => '-',//操作分隔符,一般不需要修改
'URL_PARAM_DEPR' => '-',//參數分隔符,一般不需要修改
'URL_HTML_SUFFIX' => '.html',//僞靜態後綴設置,例如 .html ,一般不需要修改
'URL_HTTP_HOST' => '', //設置網址域名,cp2.0添加
*/


//網址解析
    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];
				}
			}	
		}	
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章