如何在 PHP 中加入文件系统路径字符串?

新手上路,请多包涵

PHP中是否有内置函数可以智能地加入路径字符串?给定 abc/de//fg/x.php 作为参数的函数应该返回 abc/de/fg/x.php ;应该使用 abc/defg/x.php 作为该函数的参数给出相同的结果。

如果没有,是否有可用的课程?它对于拆分路径或删除部分路径也可能很有价值。如果你写了一些东西,你可以在这里分享你的代码吗?

可以一直使用 / ,我只为 Linux 编写代码。

在 Python 中有 os.path.join ,这很棒。

原文由 user89021 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 635
2 个回答

由于这似乎是一个受欢迎的问题,并且评论中充满了“功能建议”或“错误报告”……这个代码片段所做的只是用斜杠连接两个字符串,而不会在它们之间重复斜杠。就这样。不多也不少。它不会评估硬盘上的实际路径,也不会实际保留开头的斜杠(如果需要,请将其添加回来,至少您可以确保此代码始终返回一个 没有 开头斜杠的字符串)。

 join('/', array(trim("abc/de/", '/'), trim("/fg/x.php", '/')));

最终结果将始终是开头或结尾没有斜线且内部没有双斜线的路径。随意制作一个功能。

编辑:这是上面代码片段的一个很好的灵活函数包装器。您可以根据需要传递任意数量的路径片段,可以作为数组或单独的参数:

 function joinPaths() {
    $args = func_get_args();
    $paths = array();
    foreach ($args as $arg) {
        $paths = array_merge($paths, (array)$arg);
    }

    $paths = array_map(create_function('$p', 'return trim($p, "/");'), $paths);
    $paths = array_filter($paths);
    return join('/', $paths);
}

echo joinPaths(array('my/path', 'is', '/an/array'));
//or
echo joinPaths('my/paths/', '/are/', 'a/r/g/u/m/e/n/t/s/');

:o)

原文由 deceze 发布,翻译遵循 CC BY-SA 3.0 许可协议

$args = [sys_get_temp_dir(), "path1","path2", "filename.pdf"];
$filename = implode( DIRECTORY_SEPARATOR, $args);
// output "C:\Users\User\AppData\Local\Temp\path1\path2\filename.pdf"

原文由 Samuel Santos 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题