URL – Obtener la última parte en PHP

2 minutos de lectura

Avatar de usuario de Paulo César
paulo cesar

tengo mi url:

http://domain/fotografo/admin/gallery_bg.php

y quiero la última parte de la url:

 gallery_bg.php

pero, no quiero enlazar estático, es decir, por cada página que visito quiero sacar la última parte de la url

avatar de usuario de w3b
w3b

usar lo siguiente

<?php
    $link = $_SERVER['PHP_SELF'];
    $link_array = explode("https://stackoverflow.com/",$link);
    echo $page = end($link_array);
?>

  • No funcionó porque mi enlace terminó con un / ejemplo: https/mysite.com/products/my-name/ ¡Probé la solución de @jaydeep aquí con “nombre base” es más rápido y funciona perfectamente!

    – maiakd

    14 de diciembre de 2022 a las 9:15

Usar la función de nombre base

echo basename("http://domain/fotografo/admin/gallery_bg.php");

  • esto es muy eficiente y rapido

    – Farhang

    29/09/2018 a las 19:35

  • @farhang depende de lo que quieras que haga. Para mí $_SERVER[“REQUEST_URI”] era lo que necesitaba…..

    – Tánasis

    13 de junio de 2022 a las 9:51

  • Trabajó para mí como el respuesta validada no lo hice porque mi enlace terminó con un / mientras que necesitaba el último elemento, ya sea que haya uno o no. Gracias !

    – maiakd

    14 de diciembre de 2022 a las 9:17

Avatar de usuario de MD SHAHIDUL ISLAM
MD SHAHIDUL ISLAM

Si es la misma página:

echo $_SERVER["REQUEST_URI"];

or

echo $_SERVER["SCRIPT_NAME"];

or 

echo $_SERVER["PHP_SELF"];

En cada caso, una barra invertida (/galería_bg.php) aparecerá. Puedes recortarlo como

echo trim($_SERVER["REQUEST_URI"],"https://stackoverflow.com/");

o dividir la url por / para hacer una matriz y obtener el último elemento de la matriz

$array = explode("https://stackoverflow.com/",$url);

$last_item_index = count($url) - 1;

echo $array[$last_item_index];

o

echo basename($url);

  • Si escribe URI como “https//server/myscript y se redirige con .htaccess a digamos https//server/some.php, lo único que funcionará y le dará “myscript” es $_SERVER[“REQUEST_URI”]las otras sugerencias devolverán “some.php”

    – Tánasis

    13 de junio de 2022 a las 9:50

 $url = "http://domain/fotografo/admin/gallery_bg.php";
 $keys = parse_url($url); // parse the url
 $path = explode("https://stackoverflow.com/", $keys['path']); // splitting the path
 $last = end($path); // get the value of the last element 

puede usar la función basename ($ url) como se sugirió anteriormente. Esto devuelve el nombre del archivo de la URL. También puede proporcionar la extensión del archivo como segundo argumento para esta función, como basename ($ url, ‘.jpg’), luego se servirá el nombre del archivo sin la extensión.

P.ej:

$url = "https://i0.com/images/test.jpg"

then echo basename($url) will print test.jpg

and echo basename($url,".jpg") will print test

Avatar de usuario de Nil'z
cero

$url  = $_SERVER["PHP_SELF"];
$path = explode("https://stackoverflow.com/", $url); 
$last = end($path);

Avatar de usuario de Anand Solanki
Anand Solanki

Prueba esto:

Here you have 2 options.

1. Using explode function.

$filename = end(explode("https://stackoverflow.com/", 'http://domain/fotografo/admin/gallery_bg.php'));

2. Use basename function.

$filename = basename("http://domain/fotografo/admin/gallery_bg.php");

– Gracias

¿Ha sido útil esta solución?