php如何向上移动目录直到特定文件

时间:2016-07-10 06:36:41

标签: php regex symfony directory-structure

假设我有一个像这样的目录结构

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

如果我想从Subfolder2.1向上移动到Root文件夹我必须../../,如果我必须从Subfolder2.2.1移动到Root我必须做../../../是否有一种方法可以在php或正则表达式中编写 一个表达式,该表达式返回目录,直到找到特定的文件名 (root)

目前在symfony框架中我正在做$defaultTemplate = '::../../../../../app/Resources/views/'.$input->getOption('mytwigdest')之类的事情来在directroy中创建模板

当然这只适用于一个级别的文件夹而不是它的子文件夹或其父文件夹,我需要放入什么表达式而不是../,以便它上升到目录,直到找到特定的目录名称

__ DIR __和symfony的$this->container->getParameter('kernel.root_dir')无效,因为它会为我提供当前文件的路径,这与我使用{{创建模板的地方完全不同1}}

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分:0)

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

将始终找到直接到根文件夹。请注意,$ _SERVER后需要/