gpt4 book ai didi

php - 使用 dirname 两次或三次向上移动两个或三个文件夹

转载 作者:搜寻专家 更新时间:2023-10-31 21:09:19 25 4
gpt4 key购买 nike

看一下代码

$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
echo dirname(dirname($link));

问题 1. 使用 dirname 两次向上两层是否优雅?

问题 2。如果您想向上三层,使用三次 dirname 是个好习惯吗?

最佳答案

如果您希望更灵活地决定要升级多少层,那么我建议您编写一个小函数来帮助您处理这个问题。

这是一段示例代码,它可能会执行您想要的操作。它不是多次使用 dirname 或调用 for 循环,而是使用 preg_split , array_slice , 和 implode ,假设 / 是您的目录分隔符。

$string = 'http://example.com/some_folder/another_folder/yet_another/folder/file
.txt';

for ($i = 0; $i < 5; $i++) {
print "$i levels up: " . get_dir_path($string, $i) . "\n";
}

function get_dir_path($path_to_file, $levels_up=0) {
// Remove the http(s) protocol header
$path_to_file = preg_replace('/https?:\/\//', '', $path_to_file);

// Remove the file basename since we only care about path info.
$directory_path = dirname($path_to_file);

$directories = preg_split('/\//', $directory_path);
$levels_to_include = sizeof($directories) - $levels_up;
$directories_to_return = array_slice($directories, 0, $levels_to_include);
return implode($directories_to_return, '/');
}

结果是:

0 levels up: example.com/some_folder/another_folder/yet_another/folder
1 levels up: example.com/some_folder/another_folder/yet_another
2 levels up: example.com/some_folder/another_folder
3 levels up: example.com/some_folder
4 levels up: example.com

关于php - 使用 dirname 两次或三次向上移动两个或三个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24777729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com