Получить второй сегмент из URL-адреса
Как получить второй сегмент в URL без косой черты?
Например, у меня есть URL-адрес, похожий на этот
http://foobar/first/second
Как получить значение, где стоит "первый"?
Ответы
Ответ 1
Используйте parse_url
, чтобы получить путь от URL-адреса, а затем используйте explode
, чтобы разбить его на сегменты:
$uri_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$uri_segments = explode('/', $uri_path);
echo $uri_segments[0]; // for www.example.com/user/account you will get 'user'
Ответ 2
$segments = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));
Ответ 3
Чтобы принять ваш пример http://domain.com/first/second
$segments = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));
$numSegments = count($segments);
$currentSegment = $segments[$numSegments - 1];
echo 'Current Segment: ' , $currentSegment;
Результат Текущий сегмент: второй
Вы можете изменить numSegments -2, чтобы получить first
Ответ 4
Вот мой длинный путь захвата последнего сегмента, вдохновленный ответом Гумбо:
// finds the last URL segment
$urlArray = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', $urlArray);
$numSegments = count($segments);
$currentSegment = $segments[$numSegments - 1];
Вы можете сварить это на две линии, если хотите, но это делает довольно очевидным то, что вы делаете, даже без комментариев.
Как только у вас есть $currentSegment
, вы можете повторить его или использовать в инструкции if/else или switch, чтобы делать все, что вам нравится, на основе значения конечного сегмента.