PHP:支持中文(非英文)的basename()函数

查了下原生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; 
}