utf8 escape codificar array php url-parsing

escape - url decode php utf8



¿Cómo obtener la última ruta en una URL? (9)

Me gustaría obtener el último segmento de ruta en una URL:

  • http://blabla/bla/wce/news.php or
  • http://blabla/blablabla/dut2a/news.php

Por ejemplo, en estas dos URL, quiero obtener el segmento de ruta: ''wce'' y ''dut2a''.

Intenté usar $_SERVER[''REQUEST_URI''] , pero obtengo la ruta URL completa.


Me escribí una pequeña función para obtener la última dir / folder de una url. Solo funciona con urls reales / existentes, no teóricas. En mi caso, ese fue siempre el caso, así que ...

function uf_getLastDir($sUrl) { $sPath = parse_url($sUrl, PHP_URL_PATH); // parse URL and return only path component $aPath = explode(''/'', trim($sPath, ''/'')); // remove surrounding "/" and return parts into array end($aPath); // last element of array if (is_dir($sPath)) // if path points to dir return current($aPath); // return last element of array if (is_file($sPath)) // if path points to file return prev($aPath); // return second to last element of array return false; // or return false }

¡Funciona para mi! ¡Disfrutar! Y felicitaciones a las respuestas anteriores !!!


Otra solución:

$last_slash = strrpos(''/'', $url); $last = substr($url, $last_slash);

1: obtener la última posición de barra 2: obtener la subcadena entre la última barra y el final de la cadena

Mira aquí: TEST


Prueba esto:

$parts = explode(''/'', ''your_url_here''); $last = end($parts);


Prueba esto:

function getLastPathSegment($url) { $path = parse_url($url, PHP_URL_PATH); // to get the path from a whole URL $pathTrimmed = trim($path, ''/''); // normalise with no leading or trailing slash $pathTokens = explode(''/'', $pathTrimmed); // get segments delimited by a slash if (substr($path, -1) !== ''/'') { array_pop($pathTokens); } return end($pathTokens); // get the last segment } echo getLastPathSegment($_SERVER[''REQUEST_URI'']);

También lo he probado con algunas URLs de los comentarios. Voy a tener que asumir que todas las rutas terminan con una barra inclinada, porque no puedo identificar si / bob es un directorio o un archivo. Esto asumirá que es un archivo a menos que también tenga una barra diagonal.

echo getLastPathSegment(''http://server.com/bla/wce/news.php''); // wce echo getLastPathSegment(''http://server.com/bla/wce/''); // wce echo getLastPathSegment(''http://server.com/bla/wce''); // bla


Si desea procesar una URL absoluta, entonces puede usar parse_url() (no funciona con las URL relativas).

$url = ''http://aplicaciones.org/wp-content/uploads/2011/09/skypevideo-500x361.jpg?arg=value#anchor''; print_r(parse_url($url)); $url_path = parse_url($url, PHP_URL_PATH); $parts = explode(''/'', $url_path); $last = end($parts); echo $last;

Ejemplo de código completo aquí: http://codepad.org/klqk5o29


Tratar:

$url = ''http://blabla/blablabla/dut2a/news.php''; $tokens = explode(''/'', $url); echo $tokens[sizeof($tokens)-2];

Suponiendo que $tokens tiene al menos 2 elementos.




$arr = explode("/", $uri);