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

回到顶部