更新时间:2023-02-25 16:15:09
由于这似乎是一个很受欢迎的问题,并且注释中充斥着功能建议"或错误报告" ...此代码段所做的只是将两个带有斜杠的字符串连接在一起,而不必在它们之间重复斜杠.就这样.不多不少.它不评估硬盘上的实际路径,也不实际保留起始斜杠(如果需要,可以添加斜杠,至少可以确保此代码始终返回不带斜杠的字符串 ).
join('/', array(trim("abc/de/", '/'), trim("/fg/x.php", '/')));
最终结果将始终是在开头或结尾没有斜杠且在其中没有双斜杠的路径.随意使用它.
The end result will always be a path with no slashes at the beginning or end and no double slashes within. Feel free to make a function out of that.
这是上面片段的一个很好的灵活函数包装器.您可以根据需要传递任意数量的路径摘要,可以是数组,也可以是单独的参数:
Here's a nice flexible function wrapper for above snippet. You can pass as many path snippets as you want, either as array or separate arguments:
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)