首页 > 解决方案 > 如何将目录字符串处理成更小的目录字符串

问题描述

这是一个奇怪的问题,我不知道我是否可以正确表达它,但可以说我有一个字符串“/lib/../”并且它是一个有效的目录,现在它不容易阅读并且它的清晰视图应该是 "/" ,所以有没有办法可以将 "/lib/../" 处理成 "/"

我的一种方法是通过用'/'分解非干净的目录字符串来创建一个数组,它会给我2个(或更多取决于字符串)值“lib和..”然后我可以检查一个foreach循环如果存在“..”,则使用键,那么它只会删除“..”和它之前的值

虽然我想看看是否有人有更好的主意(特别是如果已经有这样做的功能)

标签: php

解决方案


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

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;
}
}

现在唯一的问题是它在开始时添加了一个额外的 / 但这可以通过观察数组中的值来修复然后我相信我只需要删除第一个值(为什么 idk 但它似乎工作)所以我只是添加一个

unset($letsee[0]);

在 foreach 循环之间


推荐阅读