note 123456 added to function.pathinfo

From: 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

« previous php.notes (#209925) next »