⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uri.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 2 页
字号:
	}	/**	 * Removes an item from the query string variables if it exists	 *	 * @access	public	 * @param	string $name Name of variable to remove	 * @since	1.5	 */	function delVar($name)	{		if (in_array($name, array_keys($this->_vars)))		{			unset ($this->_vars[$name]);			//empty the query			$this->_query = null;		}	}	/**	 * Sets the query to a supplied string in format:	 * 		foo=bar&x=y	 *	 * @access	public	 * @param	mixed (array|string) $query The query string	 * @since	1.5	 */	function setQuery($query)	{		if(!is_array($query)) {			if(strpos($query, '&amp;') !== false)			{			   $query = str_replace('&amp;','&',$query);			}			parse_str($query, $this->_vars);		}		if(is_array($query)) {			$this->_vars = $query;		}		//empty the query		$this->_query = null;	}	/**	 * Returns flat query string	 *	 * @access	public	 * @return	string Query string	 * @since	1.5	 */	function getQuery($toArray = false)	{		if($toArray) {			return $this->_vars;		}		//If the query is empty build it first		if(is_null($this->_query)) {			$this->_query = $this->buildQuery($this->_vars);		}		return $this->_query;	}	/**	 * Build a query from a array (reverse of the PHP parse_str())	 *	 * @access	public	 * @return	string The resulting query string	 * @since	1.5	 * @see	parse_str()	 */	function buildQuery ($params, $akey = null)	{		if ( !is_array($params) || count($params) == 0 ) {			return false;		}		$out = array();		//reset in case we are looping		if( !isset($akey) && !count($out) )  {			unset($out);			$out = array();		}		foreach ( $params as $key => $val )		{			if ( is_array($val) ) {				$out[] = JURI::buildQuery($val,$key);				continue;			}			$thekey = ( !$akey ) ? $key : $akey.'['.$key.']';			$out[] = $thekey."=".urlencode($val);		}		return implode("&",$out);	}	/**	 * Get URI scheme (protocol)	 * 		ie. http, https, ftp, etc...	 *	 * @access	public	 * @return	string The URI scheme	 * @since	1.5	 */	function getScheme() {		return $this->_scheme;	}	/**	 * Set URI scheme (protocol)	 * 		ie. http, https, ftp, etc...	 *	 * @access	public	 * @param	string $scheme The URI scheme	 * @since	1.5	 */	function setScheme($scheme) {		$this->_scheme = $scheme;	}	/**	 * Get URI username	 * 		returns the username, or null if no username was specified	 *	 * @access	public	 * @return	string The URI username	 * @since	1.5	 */	function getUser() {		return $this->_user;	}	/**	 * Set URI username	 *	 * @access	public	 * @param	string $user The URI username	 * @since	1.5	 */	function setUser($user) {		$this->_user = $user;	}	/**	 * Get URI password	 * 		returns the password, or null if no password was specified	 *	 * @access	public	 * @return	string The URI password	 * @since	1.5	 */	function getPass() {		return $this->_pass;	}	/**	 * Set URI password	 *	 * @access	public	 * @param	string $pass The URI password	 * @since	1.5	 */	function setPass($pass) {		$this->_pass = $pass;	}	/**	 * Get URI host	 * 		returns the hostname/ip, or null if no hostname/ip was specified	 *	 * @access	public	 * @return	string The URI host	 * @since	1.5	 */	function getHost() {		return $this->_host;	}	/**	 * Set URI host	 *	 * @access	public	 * @param	string $host The URI host	 * @since	1.5	 */	function setHost($host) {		$this->_host = $host;	}	/**	 * Get URI port	 * 		returns the port number, or null if no port was specified	 *	 * @access	public	 * @return	int The URI port number	 */	function getPort() {		return (isset ($this->_port)) ? $this->_port : null;	}	/**	 * Set URI port	 *	 * @access	public	 * @param	int $port The URI port number	 * @since	1.5	 */	function setPort($port) {		$this->_port = $port;	}	/**	 * Gets the URI path string	 *	 * @access	public	 * @return	string The URI path string	 * @since	1.5	 */	function getPath() {		return $this->_path;	}	/**	 * Set the URI path string	 *	 * @access	public	 * @param	string $path The URI path string	 * @since	1.5	 */	function setPath($path) {		$this->_path = $this->_cleanPath($path);	}	/**	 * Get the URI archor string	 * 		everything after the "#"	 *	 * @access	public	 * @return	string The URI anchor string	 * @since	1.5	 */	function getFragment() {		return $this->_fragment;	}	/**	 * Set the URI anchor string	 * 		everything after the "#"	 *	 * @access	public	 * @param	string $anchor The URI anchor string	 * @since	1.5	 */	function setFragment($anchor) {		$this->_fragment = $anchor;	}	/**	 * Checks whether the current URI is using HTTPS	 *	 * @access	public	 * @return	boolean True if using SSL via HTTPS	 * @since	1.5	 */	function isSSL() {		return $this->getScheme() == 'https' ? true : false;	}	/** 	 * Checks if the supplied URL is internal	 *	 * @access	public	 * @param 	string $url The URL to check	 * @return	boolean True if Internal	 * @since	1.5	 */	function isInternal($url) {		$uri =& JURI::getInstance($url);		$base = $uri->toString(array('scheme', 'host', 'port', 'path'));		$host = $uri->toString(array('scheme', 'host', 'port'));		if(stripos($base, JURI::base()) !== 0 && !empty($host)) {			return false;		}		return true;	}	/**	 * Resolves //, ../ and ./ from a path and returns	 * the result. Eg:	 *	 * /foo/bar/../boo.php	=> /foo/boo.php	 * /foo/bar/../../boo.php => /boo.php	 * /foo/bar/.././/boo.php => /foo/boo.php	 *	 * @access	private	 * @param	string $uri The URI path to clean	 * @return	string Cleaned and resolved URI path	 * @since	1.5	 */	function _cleanPath($path)	{		$path = explode('/', preg_replace('#(/+)#', '/', $path));		for ($i = 0; $i < count($path); $i ++) {			if ($path[$i] == '.') {				unset ($path[$i]);				$path = array_values($path);				$i --;			}			elseif ($path[$i] == '..' AND ($i > 1 OR ($i == 1 AND $path[0] != ''))) {				unset ($path[$i]);				unset ($path[$i -1]);				$path = array_values($path);				$i -= 2;			}			elseif ($path[$i] == '..' AND $i == 1 AND $path[0] == '') {				unset ($path[$i]);				$path = array_values($path);				$i --;			} else {				continue;			}		}		return implode('/', $path);	}	/**	 * Backwards compatibility function for parse_url function	 *	 * This function solves different bugs in PHP versions lower then	 * 4.4, will be deprecated in future versions.	 *	 * @access	private	 * @return	array Associative array containing the URL parts	 * @since	1.5	 * @see parse_url()	 */	function _parseURL($uri)	{		$parts = array();		if (version_compare( phpversion(), '4.4' ) < 0)		{			$regex = "<^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?>";			$matches = array();			preg_match($regex, $uri, $matches, PREG_OFFSET_CAPTURE);			$authority = @$matches[4][0];			if (strpos($authority, '@') !== false) {				$authority = explode('@', $authority);				@list($parts['user'], $parts['pass']) = explode(':', $authority[0]);				$authority = $authority[1];			}			if (strpos($authority, ':') !== false) {				$authority = explode(':', $authority);				$parts['host'] = $authority[0];				$parts['port'] = $authority[1];			} else {				$parts['host'] = $authority;			}			$parts['scheme'] = @$matches[2][0];			$parts['path'] = @$matches[5][0];			$parts['query'] = @$matches[7][0];			$parts['fragment'] = @$matches[9][0];		}		else		{			$parts = @parse_url($uri);		}		return $parts;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -