function pathinfo_utf($path) { if (strpos($path, '/') !== false) $basename = end(explode('/', $path)); elseif (strpos($path, '\\') !== false) $basename = end(explode('\\', $path)); else return false; if (!$basename) return false; $dirname = substr($path, 0, strlen($path) - strlen($basename) - 1); if (strpos($basename, '.') !== false) { $extension = end(explode('.', $path)); $filename = substr($basename, 0, strlen($basename) - strlen($extension) - 1); } else { $extension = ''; $filename = $basename; } return array ( 'dirname' => $dirname, 'basename' => $basename, 'extension' => $extension, 'filename' => $filename ); }
Спасибо jjoss at mail dot ru, который опубликовал ее на php.net, кажется она работает ;-)
То что нужно. Только проблема в том, что нужно еще basename
ОтветитьУдалитьМне функция не понравилась, написал свою
ОтветитьУдалитьfunction full_pathinfo($path_file){
$path_file = strtr($path_file,array('\\'=>'/'));
preg_match("~[^/]+$~",$path_file,$file);
preg_match("~([^/]+)[.$]+(.*)~",$path_file,$file_ext);
preg_match("~(.*)[/$]+~",$path_file,$dirname);
return array('dirname' => $dirname[1],
'basename' => $file[0],
'extension' => (isset($file_ext[2]))?$file_ext[2]:false,
'filename' => (isset($file_ext[1]))?$file_ext[1]:$file[0]);
}
5000 вызовов за 0.3863 с
конечно не так быстро как pathinfo 0.0283 с