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

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

总是使用/是可以的,我只为Linux编写代码.

Python中有os.path.join个,这很好.

推荐答案

因为这似乎是一个很受欢迎的问题,评论中充满了"功能建议"或"错误报告"...这个代码段所做的就是用斜杠连接两个字符串,而不在它们之间重复斜杠.这就是全部.不多也不少.它不会计算硬盘上的实际路径,也不会实际保留起始斜杠(如果需要,请将其添加回,至少可以确保此代码始终返回字符串without起始斜杠).

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)

Php相关问答推荐

在两个不同的容器中运行 Nginx + PHP-FPM 时,该配置是否可以在不共享代码卷的情况下工作?

为 Blade 中的本地日期时间输入字段设置默认值

通过正则表达式删除CSS和js版本

为什么Laravel Policy在view/Blade中不起作用?

在 WooCommerce 中获取客户最后一个订单的产品

laravel Passport 身份验证代码 - 要求授予权限,是否需要?

获取有帖子的用户

如何验证没有要验证的特定属性的发布请求

为什么 bootstrap 5. 0 模态既不工作也不出现

更简单的 PHP xpath 查询

由于“Unknown named parameter”,phpunit 测试在转到 php 8.0 后失败

Laravel,sync() - 如何同步数组并传递额外的数据透视字段?

如何在 Laravel 中验证数组?

如何使用 PHP 创建错误 404 页面?

如何在没有 Composer 的情况下安装 Composer PHP 包?

使用 Carbon 和 Blade 计算两个日期之间的差异

如何在 laravel 中使用 phpunit 测试特定的测试类

PHP 7 接口,返回类型提示和self

如何在 Ubuntu 16.04 中安装 php-curl

PHP - 无法打开流:没有这样的文件或目录