How do I get a file name from a full path with PHP?

PhpFilenames

Php Problem Overview


For example, how do I get Output.map

from

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

with PHP?

Php Solutions


Solution 1 - Php

You're looking for basename.

The example from the PHP 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"
?>

Solution 2 - Php

I've done this using the function PATHINFO which creates an array with the parts of the path for you to use! For example, you can do this:

<?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);
?>

This will return:

/usr/admin/config
test.xml
xml
test

The use of this function has been available since PHP 5.2.0!

Then you can manipulate all the parts as you need. For example, to use the full path, you can do this:

$fullPath = $xmlFile['dirname'] . '/' . $xmlFile['basename'];

Solution 3 - Php

There are several ways to get the file name and extension. You can use the following one which is easy to use.

$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

Solution 4 - Php

With SplFileInfo:

> SplFileInfo The SplFileInfo class offers a high-level object oriented > interface to information for an individual file.

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

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

> o/p: string(7) "foo.txt"

Solution 5 - Php

The basename function should give you what you want:

> Given a string containing a path to a > file, this function will return the > base name of the file.

For instance, quoting the manual's page:

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

Or, in your case:

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

You'll get:

string(10) "Output.map"

Solution 6 - Php

Try this:

echo basename($_SERVER["SCRIPT_FILENAME"], '.php') 

Solution 7 - Php

basename() has a bug when processing Asian characters like Chinese.

I use this:

function get_basename($filename)
{
    return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}

Solution 8 - Php

$filename = basename($path);

Solution 9 - Php

You can use the basename() function.

Solution 10 - Php

To do this in the fewest lines I would suggest using the built-in DIRECTORY_SEPARATOR constant along with explode(delimiter, string) to separate the path into parts and then simply pluck off the last element in the provided array.

Example:

$path = 'F:\Program Files\SSH Communications Security\SSH SecureShell\Output.map'

//Get filename from path
$pathArr = explode(DIRECTORY_SEPARATOR, $path);
$filename = end($pathArr);

echo $filename;
>> 'Output.map'

Solution 11 - Php

To get the exact file name from the URI, I would use this method:

<?php
    $file1 =basename("http://localhost/eFEIS/agency_application_form.php?formid=1&task=edit") ;

    //basename($_SERVER['REQUEST_URI']); // Or use this to get the URI dynamically.

    echo $basename = substr($file1, 0, strpos($file1, '?'));
?>

Solution 12 - Php

$image_path = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map";
$arr = explode('\\',$image_path);
$name = end($arr);

Solution 13 - Php

It's simple. For example:

<?php
    function filePath($filePath)
    {
        $fileParts = pathinfo($filePath);

        if (!isset($fileParts['filename']))
        {
            $fileParts['filename'] = substr($fileParts['basename'], 0, strrpos($fileParts['basename'], '.'));
        }
        return $fileParts;
    }

    $filePath = filePath('/www/htdocs/index.html');
    print_r($filePath);
?>

The output will be:

Array
(
    [dirname] => /www/htdocs
    [basename] => index.html
    [extension] => html
    [filename] => index
)

Solution 14 - Php

<?php

  $windows = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map";

  /* str_replace(find, replace, string, count) */
  $unix    = str_replace("\\", "/", $windows);
    
  print_r(pathinfo($unix, PATHINFO_BASENAME));
  
?> 

body, html, iframe { 
  width: 100% ;
  height: 100% ;
  overflow: hidden ;
}

<iframe src="https://ideone.com/Rfxd0P"></iframe>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionomgView Question on Stackoverflow
Solution 1 - PhpMark RushakoffView Answer on Stackoverflow
Solution 2 - PhpMetafanielView Answer on Stackoverflow
Solution 3 - PhpKhadka PushpendraView Answer on Stackoverflow
Solution 4 - Phpinternals-inView Answer on Stackoverflow
Solution 5 - PhpPascal MARTINView Answer on Stackoverflow
Solution 6 - PhpatwebceoView Answer on Stackoverflow
Solution 7 - PhpSun JunwenView Answer on Stackoverflow
Solution 8 - Phpp4bl0View Answer on Stackoverflow
Solution 9 - PhpVertigoView Answer on Stackoverflow
Solution 10 - PhpDouglas ToberView Answer on Stackoverflow
Solution 11 - PhpchandooView Answer on Stackoverflow
Solution 12 - PhpChandni SoniView Answer on Stackoverflow
Solution 13 - PhpKathirView Answer on Stackoverflow
Solution 14 - PhpanteloveView Answer on Stackoverflow