關於PHP函數pathinfo處理中文的問題

PHP一些小函數,特別是關於一些文件系統的小函數,老是不能正確處理中文,在使用的時候特別要注意這方面的問題,要麼儘可能使用中文文件名,要麼就本身寫一些小函數替代她們。php

今天又發現了一個,pathinfo在處理中文文件名時就出現了問題(在windows系統內下正常,到到Linux下就異常了windows

輸出結果爲:ide

能夠看到,當連字符「-」出如今英文文件名當中時是沒有問題的,但若是文件名是非英文字符,pathinfo函數返回的結果就有可能出現錯誤.函數

因此只能本身寫個函數處理這個問題了spa

function my_path_info($filepath) {
$path_parts = array();
$path_parts ['dirname'] = substr($filepath, 0, strrpos($filepath, '/'));
$path_parts ['basename'] = substr($filepath, strrpos($filepath, '/'));
$path_parts ['extension'] = substr(strrchr($filepath, '.'), 1);
$path_parts ['filename'] = substr($path_parts ['basename'], 0, strrpos($path_parts ['basename'], '.'));
return $path_parts;
}

上面狀況形於路徑」/usr/home/www/新建文件.rar」沒問題,但當碰到無路徑的文件」新建文件.rar」就會出現第一個中文被分割的現象,若是將上面的函數修改成:code

function my_path_info($filepath) {
$path_parts = array();
$path_parts ['dirname'] = rtrim(substr($filepath, 0, strrpos($filepath, '/')),"/")."/";
$path_parts ['basename'] = ltrim(substr($filepath, strrpos($filepath, '/')),"/");
$path_parts ['extension'] = substr(strrchr($filepath, '.'), 1);
$path_parts ['filename'] = ltrim(substr($path_parts ['basename'], 0, strrpos($path_parts ['basename'], '.')),"/");
return $path_parts;
}
相關文章
相關標籤/搜索