在 PHP 中,是否有一种内置方法来解析相对于另一个路径的路径?
例如,给定一个$baseDirdir: /home/ben/project,以下内容$path应解析为:
/foo/bar→/foo/bar../foo/bar, →/home/ben/foo/bar
想到的解决方案:
临时更改当前工作目录,并使用
realpath():$currentDir = getcwd(); chdir($baseDir); $resolvedPath = realpath($path); chdir($currentDir); return $resolvedPath;这个解决方案有点乏味。
检查路径是否是绝对的,如果不是,使用
realpath():if ($path[0] === '/') { return $path; } return realpath($currentDir . '/' . $path);该解决方案不是跨平台的;使其安全地跨平台可能并不像看起来那么简单。
最后但同样重要的是,当路径不存在时realpath()返回false,这在上面的代码中没有考虑到,并且在某些用例中可能是一个问题。
我错过了什么?