2016-04-29 156 views
-1

我有這個代碼顯示了上一頁中的所有目錄。刪除字符串的3個第一個字符

$dirs = array_filter(glob('../*'), 'is_dir'); 

foreach ($dirs as $nav) { 
    echo "<li><a href='$nav'>".$nav."</a></li>"; 
} 

輸出是這樣的:

  • ../Gėlės
  • ../dddd
  • ../images

是否有一個函數或方法可以使用從輸出字符串中刪除../前綴?

謝謝。

+0

我就知道!哈哈!他們來了! – AbraCadaver

+0

AbraCadavere被投票通過,我仍然有5分鐘等待,直到我能接受它。感謝您的幫助:)我可以問問爲什麼basename是正確的答案,但不是substr? – Giedrius

+0

1. _basename - 返回path_的尾部名稱組件,正是您在做的。 2.如果下一次您需要刪除'path/tmp /'而不是'../'或者您不知道路徑將提前什麼時候? 'basename()'仍然沒有修改它。 – AbraCadaver

回答

6

你可能會得到各種古怪的字符串操作的答案,所以這裏是合適的工具:

基名 - 路徑返回尾隨名組件

這是你在做什麼:

basename($nav) 

此外,使用GLOB_ONLYDIR標誌作爲第二個參數在​​3210電話,如果你只想要目錄。

+0

根據php手冊應該是'basename($ nav).PHP_EOL',雖然不錯! –

+0

@PedroLobito:不,只有當您需要行尾時,它不會以呈現的HTML顯示,但會使HTML源代碼難以閱讀。 – AbraCadaver

+0

好吧,一直在學習...... Tks! –

1

當然,你可以使用str_replace,但我會用AbraCadaver's答案去...

$dirs = array_filter(glob('../*'), 'is_dir'); 
foreach ($dirs as $nav) { 
    $nav = str_replace("../", "", $nav); 
    echo "<li><a href='$nav'>$nav</a></li>"; 
} 
1

您可以減去開始3個字符是這樣的:

echo substr($string, 3); 
相關問題