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

时间:2015-08-31 16:56:43

标签: php arrays string path explode

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

所以我想要的是爆炸单个值的路径。 例如:

$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(每个号码都可点击,并将用户链接到该目录)

我目前的代码:

$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);

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

有人能帮助我吗?

3 个答案:

答案 0 :(得分:3)

这应该适合你:

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

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

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

在此之后,您可以简单地使用for循环,您可以随时将数组中较大的数组部分与array_slice()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>

答案 1 :(得分:0)

strposstrrpos和substr似乎非常适合这项工作。

&#34;攀登&#34;通过斜线的出现找到子串。使用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>/";

答案 2 :(得分:0)

这有效

<?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);
?>