PHP – проанализировать текущий URL-адрес

Мне нужно проанализировать текущий URL-адрес, чтобы в любом из этих случаев:

http://mydomain.com/abc/ http://www.mydomain.com/abc/ 

Я могу получить возвращаемое значение «abc» (или любой текст в этой позиции). Как я могу это сделать?

Solutions Collecting From Web of "PHP – проанализировать текущий URL-адрес"

Вы можете использовать parse_url ();

 $url = 'http://www.mydomain.com/abc/'; print_r(parse_url($url)); echo parse_url($url, PHP_URL_PATH); 

который даст вам

 Array ( [scheme] => http [host] => www.mydomain.com [path] => /abc/ ) /abc/ 

Обновление: чтобы получить текущий URL-адрес страницы, а затем проанализируйте его:

 function curPageURL() { $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } return $pageURL; } print_r(parse_url(curPageURL())); echo parse_url($url, PHP_URL_PATH); 

источник для функции curPageURL

Взгляните на parse_url() . Он разбивает ваш URL на его составные части. Часть, о которой вы беспокоитесь, – это путь, поэтому вы можете передать PHP_URL_PATH в качестве второго аргумента. Если вы хотите только первую часть пути, вы можете использовать explode() чтобы разбить ее, используя / в качестве разделителя.

 $url = "http://www.mydomain.com/abc/"; $path = parse_url($url, PHP_URL_PATH); $pathComponents = explode("/", trim($path, "/")); // trim to prevent // empty array elements echo $pathComponents[0]; // prints 'abc' 

Проверьте встроенную функцию PHP parse_url . Это должно делать то, что вы ищете.

Чтобы получить текущий URL, вы можете использовать что-то вроде $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

Если вы хотите точно сопоставить то, что находится между первым и вторым / пути, попробуйте напрямую использовать $_SERVER['REQUEST_URI'] :

 <?php function match_uri($str) { preg_match('|^/([^/]+)|', $str, $matches); if (!isset($matches[1])) return false; return $matches[1]; } echo match_uri($_SERVER['REQUEST_URI']); 

Просто для удовольствия, версия с strpos() + substr() вместо preg_match() которая должна быть на несколько микросекунд быстрее:

 function match_uri($str) { if ($str{0} != '/') return false; $second_slash_pos = strpos($str, '/', 1); if ($second_slash_pos !== false) return substr($str, 1, $second_slash_pos-1); else return substr($str, 1); } 

НТН

 $url = 'http://www.mydomain.in/abc/'; print_r(parse_url($url)); echo parse_url($url, PHP_URL_host); 
 <?function urlSegment($i = NULL) { static $uri; if ( NULL === $uri ) { $uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); $uri = explode( '/', $uri ); $uri = array_filter( $uri ); $uri = array_values( $uri ); } if ( NULL === $i ) { return '/' . implode( '/', $uri ); } $i = ( int ) $i - 1; $uri = str_replace('%20', ' ', $uri); return isset( $uri[$i] ) ? $uri[$i] : NULL;} ?> 

адрес образца в браузере: http: // localhost / this / is / a / sample url

 <? urlSegment(1); //this urlSegment(4); //sample url?> 
 <?php $url = "http://www.mydomain.com/abc/"; //https://www... http://... https://... echo substr(parse_url($url)['path'],1,-1); //return abc ?>