這篇有解法: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) 也有另一種寫法可以參考。
沒有留言:
張貼留言