在 PHP 中回显 $_SERVER['DOCUMENT_ROOT'] 的结束部分或最后一个文件夹

Echo the ending part or last folder of $_SERVER['DOCUMENT_ROOT'] in PHP

我需要使用 $_SERVER['DOCUMENT_ROOT']; 来扫描文件和文件夹以在我的导航菜单中显示。

假设我的根目录位于 /home/user/public_html/website/.

这是我回显根目录的方式:

echo $_SERVER['DOCUMENT_ROOT'];

会显示/home/user/public_html/website/

下面是我如何回显根目录中的文件夹:

echo $_SERVER['DOCUMENT_ROOT'].'about/';

会显示/home/user/public_html/website/about/

问题: 我怎样才能删除它一直显示到根文件夹 and/or 子文件夹的所有内容。

示例:如果我回显 $_SERVER['DOCUMENT_ROOT'],我希望它显示为 / 而不是整个 /home/user/public_html/website/ 路径。

如果我回显一个子文件夹,我希望它显示为 /about/ 而不是 /home/user/public_html/website/about/.

那么,我怎样才能让它只回显 $_SERVER['DOCUMENT_ROOT']; 的结尾部分而不是整个目录路径?

我已经尝试了 dirnamebasename,但它们都不能满足我的需要。我想到了字符串替换,但没有更容易添加到 $_SERVER['DOCUMENT_ROOT'] 的东西,它只会回显根文件夹或根文件夹加子文件夹吗?

更新:

我最终使用了以下来自 anant kumar singh 的答案,但使用 preg_split 而不是 explode 对其进行了调整,因为 preg_split 可以采用多个字符串定界符,而 explode 只能采用 1.

$newArray = preg_split( " (-in/|-ca/|-co/) ", dirname($_SERVER['DOCUMENT_ROOT']) );
if(count($newArray)>1){
    echo '/'.$newArray[1].'/';
    }else{
        echo '/';
    }

如果您知道更好的方法来完成我正在尝试做的事情,请post在下面回答您的问题。

您可以通过以下方式进行爆炸:--

$newArray = explode('website/',$_SERVER['DOCUMENT_ROOT']);
 if(count($newArray)>1){
   echo "/".$newArray[1];
}else{
    echo '/';
}

如您所说,preg_split 已为您完成任务:-

$newArray = preg_split( " (-in/|-ca/|-co/) ", dirname($_SERVER['DOCUMENT_ROOT']) ); if(count($newArray)>1){ echo "/".$newArray[1]."/"; }else{ echo '/'; }

注意:- 别这样 panic.I 我不会相信你的。我只是为了未来人民的目的而做的。如果你把它作为答案,那么我会删除它。