Мне нужно использовать $_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 вместо взрыва, потому что preg_split может принимать несколько разделителей строк, тогда как взятие может занимать только 1.
$newArray = preg_split( " (-in/|-ca/|-co/) ", dirname($_SERVER['DOCUMENT_ROOT']) );
if(count($newArray)>1){
echo '/'.$newArray[1].'/';
}else{
echo '/';
}
Если вы знаете лучший способ выполнить то, что я пытаюсь сделать, пожалуйста, оставьте свои ответы ниже.
Вы можете пойти с разорваться следующим образом:
$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 '/'; }
ПРИМЕЧАНИЕ: — Не паникуйте. Я не собираюсь брать ваш кредит. Я просто сделал это для будущих людей. Если вы поставите это как ответ, я удалю его.
Других решений пока нет …