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

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

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

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

推荐答案

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

Laravel—通过单击处理多条路由

如何使用PHP停止foreach循环中的重复项?

如果活动订阅者的购物车中有订阅项目,则在WooCommerce签出中显示通知

make dd()如何正确工作?¨

如何隐藏x轴图表上的值

如何在不指定symfony列的情况下从数据库中获取行数组

WooCommerce在store 页面上显示兼容多语言的产品属性

WordPress插件和JSON不是有效的响应错误

WHERE方法不能与有效查询Laravel一起使用

服务器迁移后无法上载文件-可能存在权限问题

首先在WooCommerce我的帐户订单页面中移动操作按钮

如何在自定义邮箱内容中获取WooCommerce订单项目的详细信息?

关于Laravel缓存出现的错误

CodeIgniter 4中嵌套过滤器组不起作用

为什么foreach循环会输出每个结果?

如何用 php ML 解决这个问题?

如何在 Process facade 中转义特殊字符?

Docker: unixodbc.h 没有这样的文件或目录.已安装 unixodbc-dev 时出现pecl install sqlsrv错误

列表不在 GROUP BY 子句中并且包含 X2CRM 中的非聚合列

Symfony 自定义注销