Мне нужно проанализировать текущий URL-адрес, чтобы в любом из этих случаев:
http://mydomain.com/abc/
http://www.mydomain.com/abc/
Я могу получить возвращаемое значение "abc" (или любой текст в этой позиции). Как я могу это сделать?
Мне нужно проанализировать текущий URL-адрес, чтобы в любом из этих случаев:
http://mydomain.com/abc/
http://www.mydomain.com/abc/
Я могу получить возвращаемое значение "abc" (или любой текст в этой позиции). Как я могу это сделать?
Вы можете использовать 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);
Посмотрите на функцию 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);
}
НТН
<?php
$url = "http://www.mydomain.com/abc/"; //https://www... http://... https://...
echo substr(parse_url($url)['path'],1,-1); //return abc
?>
$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?>