查了下原生php的basename()好像并不能处理中文文件名,所以查到网上有人给出了如下自定义函数:
function get_basename($filename){
    return preg_replace('/^.+[\\\\\\/]/', '', $filename);   //我觉得正则可以写为'/^.+[\\/]/'
}
对于该函数有3点需要说明:
1. 不能处理以”/”结尾的目录名;
2. 不支持第二个参数suffix;
3. 正则表达式比较消耗系统资源。
因此,我给出了仅使用字符串处理函数的版本,弥补以上3点缺陷:
function get_basename($filename,$suffix='') {
    $f=$filename;
    $f=rtrim($f,'/');
    $startPos=strrpos($f,'/');
    $startPos=($startPos !== FALSE) ? $startPos+1 : 0;
    $f=substr($f, $startPos);
    if(!empty($suffix)) {
        $filenameLen=strlen($f);
        $checkEndPos=$filenameLen-strlen($suffix);
        if(substr($f,$checkEndPos)===$suffix) {
            $f=substr($f,0,$checkEndPos);
        }   
    }   
    return $f; 
}