【发布时间】:2015-07-15 18:59:29
【问题描述】:
我需要使用$_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/
问题:我怎样才能剥离它显示的所有内容,一直到根文件夹和/或子文件夹。
示例:如果我回显$_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 '/';
}
如果您知道更好的方法来完成我正在尝试做的事情,请在下面发布您的答案。
【问题讨论】:
-
你试过了吗?
-
是的,到目前为止,我已经尝试了很多东西,但还没有找到任何东西。目录名,基本名。除了这两个之外还有其他东西吗?
-
^ 1. 将您的尝试/工作添加到您的问题中! 2.看看
explode() -
这很混乱。一旦你说结束文档根目录的一部分,在另一边你说你想显示根文件夹/?你能区分一下吗?你想只是回应它或将其用于其他目的?
-
与回显完整路径
/home/user/public_html/website/(其中 /website/ 是根文件夹)相反,我想回显/这是文件夹网站后的最后一个斜杠。但是,如果我要回显一个子目录,例如关于页面/home/user/public_html/website/about/,我希望它显示为/about/。
标签: php explode preg-split document-root