¿Cómo obtengo un nombre de archivo a partir de una ruta completa con PHP?

Resuelto omg asked hace 54 años • 14 respuestas

Por ejemplo, ¿cómo consigoOutput.map

de

F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map

con PHP?

omg avatar Jan 01 '70 08:01 omg
Aceptado

Estas buscando basename.

El ejemplo del manual de PHP:

<?php
$path = "/home/httpd/html/index.php";
$file = basename($path);         // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>
Mark Rushakoff avatar Sep 13 '2009 16:09 Mark Rushakoff

¡Hice esto usando la función PATHINFOque crea una matriz con las partes de la ruta para que las uses! Por ejemplo, puedes hacer esto:

<?php
    $xmlFile = pathinfo('/usr/admin/config/test.xml');

    function filePathParts($arg1) {
        echo $arg1['dirname'], "\n";
        echo $arg1['basename'], "\n";
        echo $arg1['extension'], "\n";
        echo $arg1['filename'], "\n";
    }

    filePathParts($xmlFile);
?>

Esto devolverá:

/usr/admin/config
test.xml
xml
test

¡El uso de esta función está disponible desde PHP 5.2.0!

Luego podrás manipular todas las piezas como necesites. Por ejemplo, para utilizar la ruta completa, puedes hacer esto:

$fullPath = $xmlFile['dirname'] . '/' . $xmlFile['basename'];
Metafaniel avatar Feb 24 '2012 15:02 Metafaniel

Hay varias formas de obtener el nombre y la extensión del archivo. Puede utilizar el siguiente que es fácil de usar.

$url = 'http://www.nepaltraveldoor.com/images/trekking/nepal/annapurna-region/Annapurna-region-trekking.jpg';
$file = file_get_contents($url); // To get file
$name = basename($url); // To get file name
$ext = pathinfo($url, PATHINFO_EXTENSION); // To get extension
$name2 =pathinfo($url, PATHINFO_FILENAME); // File name without extension
Khadka Pushpendra avatar Jun 23 '2015 06:06 Khadka Pushpendra

Con SplFileInfo :

SplFileInfo La clase SplFileInfo ofrece una interfaz orientada a objetos de alto nivel para obtener información de un archivo individual.

Ref : http://php.net/manual/en/splfileinfo.getfilename.php

$info = new SplFileInfo('/path/to/foo.txt');
var_dump($info->getFilename());

o/p: cadena (7) "foo.txt"

internals-in avatar Aug 22 '2013 11:08 internals-in

La basenamefunción debería darte lo que quieres:

Dada una cadena que contiene una ruta a un archivo, esta función devolverá el nombre base del archivo.

Por ejemplo, citando la página del manual:

<?php
    $path = "/home/httpd/html/index.php";
    $file = basename($path);         // $file is set to "index.php"
    $file = basename($path, ".php"); // $file is set to "index"
?>

O, en tu caso:

$full = 'F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map';
var_dump(basename($full));

Obtendrás:

string(10) "Output.map"
Pascal MARTIN avatar Sep 13 '2009 16:09 Pascal MARTIN