如何将文件路径转换为不同的部分?
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);
?>
我想创建一个小代码,为每个单路径目录回显带有锚元素的文件路径。
所以我只想分解一条通往单个值的路径。 示例:
$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);
?>