2012-07-16 37 views
0

我正在研究产品目录。目录结构与域根目录相距3级。PHP - 获取当前脚本的名称和目录,不包括域名?

所以说例如我有一个橙色的产品页面。橙子在一个名为柑橘的子类别中,这个子类别叫做水果,位于名为“产品”的目录中。所以这个页面的真实路径将http://www.mydomain.com/products/fruit/citrus/orange.php

现在,我怎么会只得到如下:运行orange.php

/fruit/citrus/orange我曾尝试:dirname(__FILE__);但这给出了http://www.mydomain.com/products/fruit/citrus/orange的输出,其中包括所访问的我不要。

任何人都可以提供任何建议或建议,我可以如何完成这样的事情?

谢谢!

+0

使用'$ _ SERVER [ 'REQUEST_URI']' – Ansari 2012-07-16 22:44:20

回答

1
$levels = 3; 
$temp = array(); 

$parts = explode('/', $_SERVER['REQUEST_URI']); 
for ($i = 0; $i < $levels; $i++) { 
    $temp[] = pathinfo(array_pop($parts), PATHINFO_FILENAME); 
} 
$temp[] = ''; 

$result = implode('/', array_reverse($temp)); 
+0

谢谢您的答复。这是一个完美的解决方案。但我注意到你已经使用了'php_self'你能否建议在不应该使用这个函数的地方使用。这就像在研究与这个问题有关的信息时一样,我对这个功能一般不喜欢,但是我不太确定为什么? – 2012-07-16 22:49:17

+1

@BlackberryFan对不起,这实际上不是这个信息的最佳选择。原因是'PHP_SELF'包含当前正在执行的脚本相对于文档根目录的实际文件系统路径,并且如果URL已被重写以获取到您的文件,它可能不正确。用于这个特定任务的最好的东西是'REQUEST_URI',并且我已经相应地更新了答案。 – DaveRandom 2012-07-16 22:52:27

+0

感谢戴夫,我真的很感谢你的意见和额外的建议。它确实很有意义,你说什么! – 2012-07-16 22:55:49