如何将文件路径转换为不同的部分?

How can I convert a file path into different parts?

我想创建一个小代码,为每个单路径目录回显带有锚元素的文件路径。

所以我只想分解一条通往单个值的路径。 示例:

$file_dir = "1/2/3/4";

结果:

<a href="1">1</a>/
<a href="1/2">2</a>/
<a href="1/2/3">3</a>/
<a href="1/2/3/4">4</a>/

在浏览器中:1/2/3/4(每个数字都可以点击,并将 link 用户转到该目录)

我当前的代码:

$file_dir = "1/2/3/4";
$output = array();
$devisions = explode('/', $file_dir);
foreach ($chunks as $i => $devisions) {
    $output[] = '<a href="'.$devisions.'">'.$chunk.'</a>';
}

print_r($output);

结果不太好。我收到太多错误,我不知道从哪里开始。

有人可以帮我吗?

这应该适合你:

首先explode()将字符串放入一个数组中,它看起来像这样:

Array (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

然后count()数组来获取你拥有的零件数量。

在此之后你可以简单地使用一个 for 循环,你总是可以从数组中切出一个更大的数组部分 array_slice() and implode() 它再次变成一个字符串。

意味着在循环中会发生这种情况:

              |                   array_slice()                 |        implode()
------------------------------------------------------------------------------------------
1. iteration: | Array ( [0] => 1 )                              |          1
2. iteration: | Array ( [0] => 1 [1] => 2 )                     |          1/2
3. iteration: | Array ( [0] => 1 [1] => 2 [2] => 3 )            |          1/2/3
4. iteration: | Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )   |          1/2/3/4

代码:

<?php

    $file_dir = "1/2/3/4";
    $parts = explode("/", $file_dir);
    $amount = count($parts);

    for($i = 1; $i <= $amount; $i++)
        echo "<a href='" . implode("/", array_slice($parts, 0, $i)) . "'>" . $parts[$i-1] . "</a>";

?>

输出:

<a href='1'>1</a>
<a href='1/2'>2</a>
<a href='1/2/3'>3</a>
<a href='1/2/3/4'>4</a>

strpos, strrpos 和 substr 似乎很适合这份工作。

"Climb" 通过斜杠的出现来查找子串。使用 strrpos 获取该子字符串的最后一个斜杠后的位

$file_dir = "1/2/3/4";
$index = 0;
while (($index = strpos($file_dir, "/", $index)) !== false) {
    $file = substr($file_dir, 0, $index);
    $last = substr($file, strrpos($file, "/"));
    echo "<a href='$file'>$last</a>/";
}

编辑:我的解决方案遗漏了最右边的元素,在最后一个斜杠之后。解决此问题的一种方法是在循环后手动回显它:

$file = substr($file_dir, $index);
echo "<a href='$file'>$file</a>/";

这个有效

<?php
$file_dir = "1/2/3/4";
$ex=explode('/',$file_dir);
foreach($ex as $x){
$href[]=$x;
$output[]="<a href='".implode('/',$href)."'>$x</a>";
}
echo implode('<br />',$output);
?>