如何替换/提取路径的某些部分?

时间:2016-04-26 10:50:24

标签: php

这是我的代码:

<?php 
    $path = "monkey/cat/horse";
    $linkPath = str_replace("/", "</a><br><a href='my page.html/".$path."'>", $path);
    echo "<a href='my page.html/".$path."'>".$linkPath . "</a>";
?>

在我的页面上输出:

<a href='my page.html/monkey/cat/horse'>monkey</a><br>
<a href='my page.html/monkey/cat/horse'>cat</a><br>
<a href='my page.html/monkey/cat/horse'>horse</a>

现在我的问题是,如果希望链接只是值的路径。这意味着我想要的结果应该是

<a href='my page.html/monkey'>monkey</a><br>
<a href='my page.html/monkey/cat'>cat</a><br>
<a href='my page.html/monkey/cat/horse'>horse</a>

1 个答案:

答案 0 :(得分:2)

str_replace()不是正确的方法。

$path = "monkey/cat/horse";

$level = '';
foreach(explode('/', $path) as $segment) {
   $level .= "/{$segment}";
   echo "<a href='my page.html{$level}'>{$segment}</a>";
}

会回应

<a href='my page.html/monkey'>monkey</a>
<a href='my page.html/monkey/cat'>cat</a>
<a href='my page.html/monkey/cat/horse'>horse</a>

修改

  

是否可以将最后一段不作为链接

是的,但你应该先尝试自己......

$level = '';
$tmp = explode('/', $path);
$count = count($tmp);
for($i=0; $i<($count-1); $i++) {
   $segment = $tmp[$i];
   $level .= "/{$tmp[$i]}";
   echo "<a href='my page.html{$level}'>{$tmp[$i]}</a>";
}
echo $tmp[$count-1];