0

基本上我有一个包含 php 脚本的文件夹,然后在该文件夹中我有另一个包含脚本的文件夹。我想在每个文件夹的 index.php 脚本中加载相同的头文件。要包含的脚本是位于 inclues 文件夹中的 nav.php。

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

4 回答 4

1

在较旧的 PHP 中创建相对于_ DIR _ 或 dirname(_ FILE _)的包含路径。或$_SERVER['DOCUMENT_ROOT']永远不要访问当前目录!

include(__DIR__.'/../../includes/nav.php'); // Folder 2 files
include(__DIR__.'/../includes/nav.php'); // Folder 1 files

希望能帮助到你!

于 2012-10-18T17:10:22.817 回答
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
于 2012-10-18T17:07:03.607 回答
0

请试试::

if (basename(dirname(__FILE__)) = 'Folder2'){
    include('../../includes/nav.php');
}else{
    include('../includes/nav.php');
}
于 2012-10-18T17:16:41.653 回答
0

您可以使用特殊变量

$_SERVER['PHP_SELF']

列出 URL 中 DNS 名称之后的所有内容。此时最简单的做法可能是使用explode函数将其拆分,使用“/”作为分隔符,并删除数组的最后一个元素(您的php文件名),然后使用implode将整个字符串作为a单变量。

这将为您提供来自 Web 根目录的当前目录。

于 2012-10-18T17:18:39.377 回答