0

在 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,这在上面的代码中没有考虑到,并且在某些用例中可能是一个问题。

我错过了什么?

4

0 回答 0