我想创建一个小代码,用于回显每个单一路径目录的锚元素的文件路径。
所以我想要的是爆炸单个值的路径。 例如:
$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);
结果不太好。我收到很多错误,我不知道从哪里开始。
有人能帮助我吗?
答案 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)
strpos,strrpos和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);
?>