如何从包含url的字符串中获取当前文件夹?

时间:2012-10-18 17:05:12

标签: php

基本上我有一个带有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目录名。如何剪切字符串专门删除除目录名称之外的所有内容。所有解决方案都很有用,但我对以这种方式切割字符串的功能特别感兴趣。

4 个答案:

答案 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根目录中为您提供当前目录。