2011-11-22 15 views
1

预先感谢您的帮助!在PHP中确定文件夹深度“../”的代码?

我以前使用我第一次启动时创建的代码,因为无法找到我想要的代码段。 (也许不知道术语)我确信有一个更简单的方法,这就是为什么我要咨询意见。

/编辑/ 将使用该模板的页面暂时托管在另一网站的子目录,并使用“/”开始在页面的根不是我想要去一个选项,因为想要毫不费力地将网站放在不同的托管服务器上,并为网页添加一个域名,以便从根目录(例如“/temp-dir/site/images/image.jpg”)的路径需要更新,而,使用以前的目录(例如“../../../images/image.jpg”)将在移动时从现有站点和新位置开始工作。 /EndEdit中/

我所试图达到使用的方法就像是头模板文件名之前申请的“../”适量:

<link href="<?php if(isset($pDepth)){ echo $prev; }?>style.css" /> 

其中$上一页将根据每个网页上的变量$ pDepth将先前的目录代码从“../”变为“../../../../”。例如:

if($pDepth == 3){the output of $prev will equal "../../../"} 

我看到输出可以使用++进行更改,但不能添加字符串吗?我在想这样的事情:

if($pDepth == 4){ 

    $i = 0; 

    while($i != $pDepth){ 

    // help needed here 
    // add "../" until $prev = "../../../../" 

    } 
} 

我还在学习编写代码,并希望得到任何帮助。再次感谢!

+5

会不会使用虚拟根路径是更容易?例如,如果所有东西都在'/ templates/headers /'下面(例如'/ templates/headers/my_first_header.php'),那就用它作为前缀。 –

+0

看到更新后的段落,本网站暂时作为现有域的子文件夹托管,我想最终将其移至自己的托管服务器,而无需更新路径。 – hdavis84

回答

4
$prev = str_repeat('../', $pDepth); 
+0

奇妙的,最小的编码,它做我所需要的!谢谢! – hdavis84

+0

不知道关于str_repeat,这是一个方便的功能! – Ben

1
$pDepth = $pDepth . "../"; 

应该工作得很好。

+0

虽然如果代码是用于PHP,它将需要:$ pDepth = $ pDepth。 “../”;或者你可以简单地:$ pDepth。=“../”; – mason81

+0

是的,我发现后立即发布:)猜猜我仍然在C#模式。 – abhinav

+0

是啊,这一直发生在我身上,就像我使用javascript和php ... – mason81

1

要连接PHP中的字符串,请使用.运算符。 试试这个:

if($pDepth == 4){ 

    $i = 0; 

    while($i != $pDepth){ 
    $prev .= '../'; 
    $i++; 

    } 
} 
+0

感谢您理解我期待做的事情,正如清楚地表明的那样。我会尝试这个,看看它是我需要的! – hdavis84

+0

完美,再次感谢! – hdavis84

+0

这适用于我一直在寻找的东西。 kingcrunch发布了一个较轻的代码'$ prev = str_repeat('../',$ pDepth);'这也是我正在寻找的。再次感谢你,因为你明白我在问什么! – hdavis84