這篇有解法:php的pathinfo()函数处理中文问题解决办法 [原创]
不過它的做法只能處理 Linux 樣式的斜線 / 。我改良了一下做法,可以自動判斷斜線樣式:
$filepath = '\\\\someonePC\share\業務\報價單\ABC有限公司_2013-07-31_02-45-43.xls';
echo $filepath;
$arr = myPathInfo($filepath);
echo "<pre>".print_r($arr,1)."</pre>";
function myPathInfo($filepath){
if(preg_match("#\\\#", $filepath)){ //3個斜線代表1個斜線,應該是因為要跳脫2次
$delimiter = '\\'; //2個斜線代表1個斜線
}
else{
$delimiter = '/';
}
$path_parts = array();
$path_parts['basename'] = ltrim(substr($filepath, strrpos($filepath, $delimiter)),$delimiter);
$path_parts['extension'] = substr(strrchr($filepath, '.'), 1);
$path_parts['filename'] = ltrim(substr($path_parts ['basename'], 0, strrpos($path_parts ['basename'], '.')),$delimiter);
$pos = strrpos($filepath, $path_parts['filename']);
$path_parts['dirname'] = substr($filepath, 0, $pos);
return $path_parts;
}
結果:
\\someonePC\share\業務\報價單\ABC有限公司_2013-07-31_02-45-43.xls
Array
(
[basename] => ABC有限公司_2013-07-31_02-45-43.xls
[extension] => xls
[filename] => ABC有限公司_2013-07-31_02-45-43
[dirname] => \\someonePC\share\業務\報價單\
)
副檔名的話,這篇 PHP 取得檔案的副檔名(PHP Get File Extension) 也有另一種寫法可以參考。
沒有留言:
張貼留言