Today, we will learn how to get the file name from a given path in PHP. There are various ways to achieve this, but we will discuss two common methods in detail. Let’s assume that we have a database that stores filename along with the path in the table.
Suppose, we have a file path like
storage/upload/image/hydrating-fruits.jpg that is stored in the database. So, how can we get the name of the file e.g.
hydrating-fruits.jpg? Well, we can do this using regex but PHP provides simple functions that can be easy to implement.
The two methods we will use in this article are:
- pathinfo() function
- basename() function
Method 1: Using pathinfo() function
The pathinfo() is a PHP function that returns information about a file path. The pathinfo() returns information about path: either an associative array or a string, depending on flags.
Syntax: pathinfo(string $path, int $flags = PATHINFO_ALL): array|string
$path is the path o be parsed and
$flag specifies a specific element to be returned; one of PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION or PATHINFO_FILENAME.
For the file path that is stored in the database, we will first retrieve all the information about the file as accessed the key accordingly.
<?php $file_info = pathinfo('storage/upload/image/hydrating-fruits.jpg'); var_dump($file_info);
It will give below output. From this array, we can access the file name using the
Method 2: Using basename() function
As an alternative to the above function, we can use
basename()function to directly access the file name from the file path. It returns the trailing name component of the path.
//Syntax basename(string $path, string $suffix = "")
This function accepts two parameters i.e.
path is the file path whereas
suffixwhich is optional, if the name component ends in
suffix this will also be cut off.
The below example shows how we can access only filename from the file path directory in PHP.
<?php $filename = basename('storage/upload/image/hydrating-fruits.jpg'); $without_ext = basename('storage/upload/image/hydrating-fruits.jpg', '.jpg') var_dump($filename); var_dump($without_ext); // output hydrating-fruits.jpg <-- with extension hydrating-fruits <-- without extension
This is all about getting file names from the file path in PHP. This is a common function that can become handy when dealing with files and directories.