Removing the file path from a filename in PHP is be easy!
The basename() function will remove the file’s path from your string and leave only the filename. So, for example, it means that if your file path string is: ‘/home/anto.online/apac/basepath/test.php’, then using basename($path) will return only the filename. The result will thus be: ‘test.php’.
Functions used in conjunction
The basename() function is often used with these PHP functions:
dirname() – Can return the file path of a parent directory. If there are no slashes in the file path, a dot (‘.‘) is returned, indicating the current file path. Otherwise, the returned string is a file path with any trailing component removed.
Example of how to use these functions in PHP:
//get the absolute path of a file
$real = realpath('./test.php');
echo 'realpath result: ' . $real . '<br>';
//output: /home/anto.online/apac/basepath/test.php
//get the absolute path of a file
$dir = dirname('./test.php');
echo 'dirname result: ' . $dir . '<br>';
//output: .
//get the filename and remove the filepath
$base = basename($real);
echo 'basename result: ' . $base . '<br>';
//output: test.php
Practical example – Removing file path from error message
Let’s say you need to write an error handler in PHP. The custom handler must not expose paths to the front-end. Your remove file paths for security reasons.
We can use basepath() to sanitize the $file variable and remove file paths.
Thus, for the custom error handler example below:
function customErrorHandler($code, $message, $file, $line) {
$logger = createLogger();
...
We can do this by determining the string position of the ‘/’ and then use a substring function. (This would be the hard way!)
Alternatively, we can use the basename() method in PHP. It even considers the differences between Windows and Linux!
Adding the basename() function will make our error handler look like this:
function customErrorHandler($code, $message, $file, $line) {
$logger = createLogger();
...
$message = 'Error ID: [' . $uid . '] [' . SITE_ID . '] ' . $user . 'Message: [' . $message . '] At: [' . basename($file) . '] Line: [' . $line . '] Code: [' . $code . ']';
...
Great post. it is very useful to the developers or learning purpose. Thank You for sharing the post.
keep sharing post.
Awesome blog for knowledge. Thank you for sharing this useful article. This blog is a very helpful to me. Keep sharing this type informative articles with us.
Awesome blog for knowledge. Thank you for sharing this useful article. This blog is a very helpful to me. Keep sharing this type informative articles with us.
The best explanation I have read and very easy to understand and apply. Thank you for sharing.
Excellent Information for knowledge. Keep Sharing it.
Excellent Article. Thank You Keep Sharing
Excellent information. Keep sharing it!