在 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'];
的结尾部分而不是整个目录路径?
我已经尝试了 dirname
和 basename
,但它们都不能满足我的需要。我想到了字符串替换,但没有更容易添加到 $_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 我不会相信你的。我只是为了未来人民的目的而做的。如果你把它作为答案,那么我会删除它。
我需要使用 $_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'];
的结尾部分而不是整个目录路径?
我已经尝试了 dirname
和 basename
,但它们都不能满足我的需要。我想到了字符串替换,但没有更容易添加到 $_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 我不会相信你的。我只是为了未来人民的目的而做的。如果你把它作为答案,那么我会删除它。