2016-07-10 49 views
2

可以說,我有這樣的PHP如何拉昇目錄中,直到一個特定的文件

____ 
| Root 
    |_____ 
     Folder1 
    |_____ 
     Folder2 
     |_____ 
      Subfolder2.1 
      Subfolder2.2 
       |______ 
        Subfolder2.2.1 

的目錄結構,如果我想從Subfolder2.1向上移動到Root文件夾我會做../../如果我必須從Subfolder2.2.1移動到Root我必須做../../../有沒有在PHP或正則表達式的方式來寫可以追溯到了目錄中的表達,直到找到一個特定的文件名(根)

目前symfony框架我在做類似$defaultTemplate = '::../../../../../app/Resources/views/'.$input->getOption('mytwigdest')創建directroy

ofcourse這僅適用於文件夾的一個水平不是其子文件夾或它的父文件夾,我需要什麼表情,把裏面的模板而不是../,使其上升的目錄,直到找到一個特定的目錄名

__ DIR __和symfony中的$this->container->getParameter('kernel.root_dir')是行不通的,因爲它會給我這是從我創建這裏完全不同的當前文件的路徑模板使用$defaultTemplate

+0

是數字在'Subfolder2.2.1'僅用於代表您的問題或存在的真實目錄的名稱的一部分目錄? – revo

+0

只是爲了解釋它SO –

+0

imo,因爲子文件夾通常包含有用和識別的東西。即日誌文件,數據文件等。我只是有一些定義的常量來訪問它們。即「APP_LOG_DIR」,「APP_DATA_ROOT」等。它們由「應用程序引導程序」設置。 –

回答

0
include($_SERVER['DOCUMENT_ROOT'].'/index.php'); 

將始終找到直接到根文件夾。請注意,在$ _SERVER之後需要/

+0

這導致創建一組目錄,如'C> wanp64> www> projectname'它實際上認爲這些目錄是需要創建的XD,這與使用__ DIR __相同或者我在問題 –

1

雖然我不確定爲什麼你需要用這樣的方式來解決你的問題,這將計算父目錄的數量../到自定義目錄。你只想改變名字。這是Root

str_repeat("../", count(explode(DIRECTORY_SEPARATOR , __FILE__)) - (1 + array_flip(explode(DIRECTORY_SEPARATOR , __FILE__))['Root'])); 

把所有東西放在一起:

$defaultTemplate = '::'.str_repeat("../", count(explode(DIRECTORY_SEPARATOR , __FILE__)) - (1 + array_flip(explode(DIRECTORY_SEPARATOR , __FILE__))['Root'])).'app/Resources/views/'.$input->getOption('mytwigdest'); 
+0

中提到的symfony方法就像使用php內建函數一樣,但仍然是'__FILE__'給出當前文件的地址,我不想從不同的文件夾向上移動,而不是當前文件的地址。 +1 –

+0

簡潔的方式是值得歡迎的,但很抱歉,這個特定問題沒有內置功能。 @ptsdtriggered – revo

相關問題