2014-01-22 118 views
-1

我有例如以下路徑:打破路徑分爲多條路徑

/Test1/Test2/Test3 

有時候,這個路徑可以是例如:

/Test1/Test2/Test3/Test4/Test5 and so on... 

我希望做的是採取這種未知的路徑和將其翻譯成最終導致如下導航URL的部分:

/Test1 
/Test1/Test2 
/Test1/Test2/Test3 
and so on... 

很難提供你有任何代碼示例,因爲我嘗試過的許多事情都導致沒有好的結果。

我假設我需要使用/作爲分隔符來爆炸()路徑,然後以某種方式將它拼接在一起。我真的很茫然。

有沒有人有任何建議,我可以嘗試?

+0

在'/'和'implode'上每次使用'array_slice'返回一個數組中的另一個對象。 – alfasin

回答

2
<?php 
$path = '/Test1/Test2/Test3/Test4/Test5'; 

$explode = explode('/', $path); 

$count = count($explode); 

$res = ''; 
for($i = 1; $i < $count; $i++) { 
    echo $res .= '/' . $explode[$i]; 
    echo '<br/>'; 
} 

返回:

/Test1 
/Test1/Test2 
/Test1/Test2/Test3 
/Test1/Test2/Test3/Test4 
/Test1/Test2/Test3/Test4/Test5 
+1

謝謝!這正是我正在尋找的。 – Diemuzi

1

這裏是你如何讓你的陣列段:

$path = '/Test1/Test2/Test3/Test4/Test5'; // or whatever your path is 
$segments = explode('/', ltrim('/',$path)); 

如果我理解你,那麼你想要做的是建立一個數組,它是像

Array(
    [0] => '/Test1' 
    [1] => '/Test1/Test2' 
    ... 
) 

所以你呢LD通過你們陣列循環,建立這一新的陣列

$paths_from_segments = array(); 
$segment_count = count($sgements); 
$path_string = ''; 
foreach($sgement as $segment) { 
    $path_string .= '/' . $segment; 
    $paths_from_segments[] = $path_string; 
} 
var_dump($paths_from_segments); 
1

不正是你所說的「拼接一起」,但是從它你要找的PHP的implode(),這是explode()相反的聲音。

explode("/", "test1/test2"); 

// result: 
// Array 
// (
//  [0] => test1 
//  [1] => test2 
//) 

implode("/", Array("test1", "test2")); 

// result: 
// "test1/test2"