19.4. Splitting a Filename into Its Component Parts
Problem
You want to find a file’s path and filename; for example, you want to create a file in the same directory as an existing file.
Solution
Use basename( )
to get the filename and dirname( ) to get the path:
$full_name = '/usr/local/php/php.ini'; $base = basename($full_name); // $base is php.ini $dir = dirname($full_name); // $dir is /usr/local/php
Use pathinfo( )
to get the directory name, base name, and
extension in an associative array:
$info = pathinfo('/usr/local/php/php.ini');Discussion
To create a temporary file in the same directory as an existing file,
use dirname( ) to find the directory, and pass
that directory to tempnam( )
:
$dir = dirname($existing_file); $temp = tempnam($dir,'temp'); $temp_fh = fopen($temp,'w');
The
elements in the associative array returned by
pathinfo( ) are dirname,
basename, and extension:
$info = pathinfo('/usr/local/php/php.ini');
print_r($info);
Array
(
[dirname] => /usr/local/php
[basename] => php.ini
[extension] => ini
)You can also pass basename( ) an optional suffix
to remove it from the filename. This sets $base to
php:
$base = basename('/usr/local/php/php.ini','.ini');Using functions such as basename( ),
dirname( ), and pathinfo( ) is
more portable than just separating a full filename on
/ because they use an operating-system appropriate
separator. On Windows, these functions treat
both
/ and
\ as file and directory separators. On other
platforms, only / is used.
There’s no built-in ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access