note 123456 added to function.pathinfo
| From: | guy dot paddock at gmail dot com | Date: | Thu, 20 Dec 2018 03:08:47 +0000 |
| Subject: | note 123456 added to function.pathinfo | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-209925@lists.php.net to get a copy of this message | ||
Here is an enhanced version of pathinfo() that interprets multi-part extensions like tar.gz as one
file extension:
<?php
function pathinfo_enhanced($file_path) {
$core_path_info = pathinfo($file_path);
$filename = $core_path_info['filename'];
if (isset($core_path_info['extension'])) {
$extension = $core_path_info['extension'];
} else {
$extension = '';
}
$extension_parts = array();
while (!empty($extension)) {
array_unshift($extension_parts, $extension);
$remaining_path_info = pathinfo($filename);
$filename = $remaining_path_info['filename'];
if (isset($remaining_path_info['extension'])) {
$extension = $remaining_path_info['extension'];
} else {
$extension = '';
}
}
$revised_path_info = array(
'filename' => $filename,
'extension' => implode('.', $extension_parts),
);
return array_merge($core_path_info, $revised_path_info);
}
// === EXAMPLES ===
// Directory; two extensions
$path = '/www/htdocs/inc/file.tar.gz';
$info = pathinfo_enhanced($path);
echo "$path\n";
print_r($info);
echo "\n";
// Directory; one extension
$path = '/www/htdocs/inc/file.tgz';
$info = pathinfo_enhanced($path);
echo "$path\n";
print_r($info);
echo "\n";
// Directory; no extension
$path = '/www/htdocs/inc/lib';
$info = pathinfo_enhanced($path);
echo "$path\n";
print_r($info);
echo "\n";
// No directory; one extension
$path = 'test.php';
$info = pathinfo_enhanced($path);
echo "$path\n";
print_r($info);
echo "\n";
// No directory; dot file
$path = '.example';
$info = pathinfo_enhanced($path);
echo "$path\n";
print_r($info);
echo "\n";
// Directory only
$path = '/www/htdocs/inc/';
$info = pathinfo_enhanced($path);
echo "$path\n";
print_r($info);
echo "\n";
----
Server IP: 208.43.231.9
Probable Submitter: 67.241.72.73
----
Manual Page -- http://php.net/manual/en/function.pathinfo.php
Edit -- https://master.php.net/note/edit/123456
Del: integrated -- https://master.php.net/note/delete/123456/integrated
Del: useless -- https://master.php.net/note/delete/123456/useless
Del: bad code -- https://master.php.net/note/delete/123456/bad+code
Del: spam -- https://master.php.net/note/delete/123456/spam
Del: non-english -- https://master.php.net/note/delete/123456/non-english
Del: in docs -- https://master.php.net/note/delete/123456/in+docs
Del: other reasons-- https://master.php.net/note/delete/123456
Reject -- https://master.php.net/note/reject/123456
Search -- https://master.php.net/manage/user-notes.php