📄 uri.php
字号:
} /** * 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, '&') !== false) { $query = str_replace('&','&',$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 + -