PHP平台兼容之basename函数在windows和linux上的区别问题
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);
以上是 PHP平台兼容之basename函数在windows和linux上的区别问题 的全部内容, 来源链接: utcz.com/z/518267.html