2011-03-28 11 views
21

¿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?

+0

sin duda es éste es duplicado, échale un vistazo aquí http://php.net/manual/en/function.parse-url.php –

+0

¿Estás seguro de que tienes URL completa, no solo solicite uri '/ first/second'? ¿De dónde sacas esta url? –

+0

@poelinca no ha leído la pregunta –

Respuesta

40

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' 
+6

+1, sin embargo, le aconsejo que no modifique la matriz $ _SERVER. – igorw

8
$segments = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')); 
1

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.

2

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