php pathinfo中文檔案名稱問題
這次碰到需要保留檔案名稱並加上亂碼的需求碰到這個問題,pathinfo在取得filename的時候如果不是ASCII碼就有可能會碰到,以前都是直接洗掉名稱而沒注意到這件事。
使用pathinfo()取得filename時碰到ASCII碼以前都抓不到東西
EX:中文測試1111.pdf只會抓到1111 中文測試.pdf會抓到空白
$path_parts = pathinfo($filename);
$re_filename = $path_parts['filename'];
也可以用setlocale(LC_ALL,'en_US.UTF-8');
處理
不過怕其他的功能出問題採用了後面的其他方法,就是在取得之前先把名稱加上ASCII讓函數可以正確的處理字串。
把整個上傳檔案名稱丟進函數就好
//$re_filename = getFilename($_FILES['inputname']['name']);
function getFilename($path)
{
// if there's no '/', we're probably dealing with just a filename
// so just put an 'a' in front of it
if (strpos($path, '/') === false)
{
$path_parts = pathinfo('a'.$path);
}
else
{
$path= str_replace('/', '/a', $path);
$path_parts = pathinfo($path);
}
return substr($path_parts["filename"],1);
}