基本上我有一个带有php脚本的文件夹,然后在该文件夹中我有另一个带脚本的文件夹。我想在每个文件夹的index.php脚本中加载相同的头文件。要包含的脚本是nav.php,位于inclues文件夹中。
树
includes
nav.php
Folder1
header.php
index.php
Folder2
index.php
我想这样做:
if getcwd() = 'Folder2'{
include('../../includes/nav.php');
}else{
include('../includes/nav.php');
但问题是getcwd()返回字符串中的整个路径,但我只想要cur目录名。如何剪切字符串专门删除除目录名称之外的所有内容。所有解决方案都很有用,但我对以这种方式切割字符串的功能特别感兴趣。
答案 0 :(得分:1)
在较旧的PHP中,使相对于 _ DIR _或dirname(_ FILE _)的包含路径。或 $ _ SERVER ['DOCUMENT_ROOT'] 。 永远不会出现目录!
include(__DIR__.'/../../includes/nav.php'); // Folder 2 files
include(__DIR__.'/../includes/nav.php'); // Folder 1 files
希望它有所帮助!
答案 1 :(得分:0)
见功能:
basename
在此处阅读:http://php.net/manual/en/function.basename.php
basename( getcwd())
应该从路径返回文件夹名称。 以下是basename和dirname的示例:
#> pwd
/home/user
#> php
<?php
echo getcwd() . "\n" ;
echo dirname( getcwd()) . "\n" ;
echo basename( getcwd()) . "\n" ;
?>
/home/user
/home
user
答案 2 :(得分:0)
请尝试::
if (basename(dirname(__FILE__)) = 'Folder2'){
include('../../includes/nav.php');
}else{
include('../includes/nav.php');
}
答案 3 :(得分:0)
您可以使用特殊变量
$_SERVER['PHP_SELF']
列出网址中DNS名称后的所有内容。最简单的事情可能就是用爆炸函数将它拆分为“/”作为分隔符,并删除数组的最后一个元素(你的php文件名),然后使用implode将整个字符串作为a单变量。
这将从web根目录中为您提供当前目录。