2016-04-29 118 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); 
相关问题