2012-10-18 38 views
0

基本上我有一個文件夾與PHP腳本,然後在該文件夾中我有另一個腳本文件夾。我想在每個文件夾的index.php腳本中加載相同的頭文件。要包含的腳本是位於inclues文件夾中的nav.php。如何從包含url的字符串中獲取當前文件夾?

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

見功能:

basename 

讀到它在這裏:http://php.net/manual/en/function.basename.php

basename(getcwd()) 

應該從路徑返回到您的文件夾名稱。 這裏是基本名和目錄名的例子:

#> pwd 
/home/user 
#> php 
<?php 
echo getcwd() . "\n" ; 
echo dirname(getcwd()) . "\n" ; 
echo basename(getcwd()) . "\n" ; 
?> 
/home/user 
/home 
user 
+0

我認爲這與路徑中包含的文件的當前路徑一起使用,而不是從getcwd() – Duice352

+0

返回的字符串?爲什麼-2指向我的答案?如何解釋我寫錯了而不是單擊箭頭? – Grzegorz

+0

它不是我idk誰做的 – Duice352

1

製作包括相對路徑_ DIR _或目錄名(_ FILE _)老年PHP。或到$ _SERVER ['DOCUMENT_ROOT']永遠不要當前目錄!

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

希望它有幫助!

+0

doc根據gotcha感謝那..但我也可以得到一個關於如何切割字符串在這個意義上的答案,因爲我確實看到它沿着這條路是人造的,我所知道的是substr和計數,但我想根據在哪裏切割斜槓是或某些詞 – Duice352

+0

@ Duice352不知道你的意思,但學習正則表達式和字符串函數。你需要!你在PHP中做的任何事情,你會碰到字符串。有沒有其他的方式:) – CodeAngry

+0

@ Duice352而你可以投我的答案:) – CodeAngry

0

請嘗試::

if (basename(dirname(__FILE__)) = 'Folder2'){ 
    include('../../includes/nav.php'); 
}else{ 
    include('../includes/nav.php'); 
} 
0

可以使用特殊變量

$_SERVER['PHP_SELF'] 

列出在URL中的DNS名稱之後的一切。在這一點上最容易做的事情可能是使用「/」作爲分隔符將爆炸函數拆分,然後刪除數組的最後一個元素(您的php文件名),然後使用implode將整個字符串作爲單變量。

這會給你從Web根目錄下的當前目錄。

相關問題