Php 如何将dir字符串处理为较小的dir字符串

Php 如何将dir字符串处理为较小的dir字符串,php,Php,这是一个奇怪的问题,我不知道我是否能正确表达它,但假设我有一个字符串“/lib/。/”并且它是一个有效的dir,现在它不容易阅读,它的清晰视图应该是“/”,那么有没有办法将“/lib/。/”处理为“/” 我认为一种方法是通过“/”分解非干净的dir字符串来创建一个数组,它将给我2个(或更多,取决于字符串)值“lib和…”。然后,我可以用一个键签入foreach循环。如果存在“..”,那么它只会删除“..”和它前面的值 尽管我想看看是否有人有更好的想法(特别是如果已经有这样的功能的话)我认为Php

这是一个奇怪的问题,我不知道我是否能正确表达它,但假设我有一个字符串“/lib/。/”并且它是一个有效的dir,现在它不容易阅读,它的清晰视图应该是“/”,那么有没有办法将“/lib/。/”处理为“/”

我认为一种方法是通过“/”分解非干净的dir字符串来创建一个数组,它将给我2个(或更多,取决于字符串)值“lib和…”。然后,我可以用一个键签入foreach循环。如果存在“..”,那么它只会删除“..”和它前面的值


尽管我想看看是否有人有更好的想法(特别是如果已经有这样的功能的话)

我认为Php realpath函数就是您想要的。

我开始创建自己的修复程序,这段代码就做到了

function hahaPathGoFix($f){
$letsee = explode('/',$f);
foreach ($letsee as $key => $sd){
if ($sd == '..'){
unset($letsee[$key]);
unset($letsee[$key-1]);
}
}
foreach ($letsee as $fin){
echo '/'.$fin;
}
}
现在唯一的问题是,它在Begging中添加了一个额外的/但可以通过观察数组中的值来修复,然后我相信我只需要删除第一个值(为什么idk,但它似乎有效),所以我只添加了一个

unset($letsee[0]);

在foreach循环之间

请不要只要求我们为您解决问题。向我们展示你是如何试图自己解决问题的,然后向我们展示结果是什么,并告诉我们为什么你觉得它不起作用。给我们一个明确的解释,什么是不工作的,并提供。读一个好问题。请务必阅读。我不是要解决它,我给出了一个可能的解决方法,但我只是问是否有一个函数可以解决它,我不是要代码,只是一个简单的“不,我认为你的想法是好的”或“你可能想在php中检查这个功能”为什么你只想从这个路径中提取
/
?如果你有string
/lib/。
?“我想看看是否有人有更好的想法”问题与堆栈溢出无关。谢谢你告诉我jayi尝试过它,但它似乎不经常工作,尽管我认为在正常情况下它会工作