¿Cómo obtener el segundo segmento en URL sin barras? Por ejemplo, tengo una URL`s como esteObtener el segundo segmento de la url
http://foobar/first/second
Cómo obtener el valor en "primera" significa?
¿Cómo obtener el segundo segmento en URL sin barras? Por ejemplo, tengo una URL`s como esteObtener el segundo segmento de la url
http://foobar/first/second
Cómo obtener el valor en "primera" significa?
Uso parse_url
para obtener la ruta de la URL y luego usar explode
dividirlo en sus segmentos:
$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'
+1, sin embargo, le aconsejo que no modifique la matriz $ _SERVER. – igorw
$segments = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));
aquí está mi camino largo aliento de agarrar el último segmento, inspirado por la respuesta de Gumbo :
// finds the last URL segment
$urlArray = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', $urlArray);
$numSegments = count($segments);
$currentSegment = $segments[$numSegments - 1];
se puede hervir que en dos líneas, si se quiere, pero de esta manera hace que sea bastante obvio lo que estás haciendo, incluso sin el comentario.
Una vez que tenga el $currentSegment
, puede repetirlo o usarlo en una instrucción if/else o cambiar para hacer lo que quiera en función del valor del segmento final.
para tomar su ejemplo 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;
resultaría en Segmento Actual: segundo
se puede cambiar el numSegments -2 para obtener primera
sin duda es éste es duplicado, échale un vistazo aquí http://php.net/manual/en/function.parse-url.php –
¿Estás seguro de que tienes URL completa, no solo solicite uri '/ first/second'? ¿De dónde sacas esta url? –
@poelinca no ha leído la pregunta –