basename() 用于获取一个路径的最后一个文件名;
如果路径时 是一个 文件夹路径,
例如在linux环境,,
basename('/www/web/data/admin/文件夹一/文件夹2') 返回 '文件夹2';
如果在window环境:
basename('/www/web/data/admin/文件夹一/文件夹2') 返回的是 '文件夹一/文件夹2';
这就是区别,windows环境下,basename 是有bug存在的。
所以php程序要兼容 windows环境和linux环境,需要改写 basename函数的功能;
查询资料后,可以用 正则表达式的方式 取代basename的功能,让其在不同平台上获得一致的返回值、
function basenameSplit($path){
$matches = []; if (preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', trim($path), $matches)) { return [$matches[1], $matches[2]];
} return [null,null];
}
使用的时候: list(, $fileName) = basenameSplit($path);
这个效果等同于 $fileName = basename($path);