php - 如何可靠地解决相对于另一个路径的路径?
问题描述
在 PHP 中,是否有一种内置方法来解析相对于另一个路径的路径?
例如,给定一个$baseDir
dir: /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
,这在上面的代码中没有考虑到,并且在某些用例中可能是一个问题。
我错过了什么?
解决方案
推荐阅读
- angular - 如何从自定义确认装饰器访问自定义服务和对话框
- node.js - 如何使用纱线执行 bin?
- python - 无法单击元素内的按钮
- javascript - 滚动时如何在当前块中运行一次函数?
- assembly - nasm:在运行时从 rip(指令指针)获取重定位二进制文件的偏移量
- python - 2 种布局中橡皮筋的小部件选择问题
- google-apps-script - 如何检查单元格中的日期 + 5 = 今天?(Google Apps 脚本 + Google 表格)
- c# - 数据表的动态分组和排序
- sql - 根据第一行中两列的数学有条件地显示下一行?
- discord.js - 如何检测用户何时收到角色?