如何从URL获取当前的Web目录?

时间:2010-07-15 20:43:01

标签: php preg-match

如果我的网址为http://www.example.com/sites/dir/index.html,我想提取“网站”这个词。我知道我必须使用正则表达式,但由于某种原因,我对它们的了解并不适用于PHP。

我正在尝试使用:

 $URL = $_SERVER["REQUEST_URI"];
 preg_match("%^/(.*)/%", $URL, $matches);

但我一定做错了。我也希望它有一个catch功能,如果它在主站点www.example.com然后它会做“MAIN”这个词

编辑:抱歉,我知道dirname ...它提供了完整的目录路径。我只想要第一个目录......所以如果它是www.example.com/1/2/3/4/5/index.html那么它只返回1,而不是/ 1/2/3 / 4/5 /

5 个答案:

答案 0 :(得分:2)

使用dirname功能,如下所示:

$dir =  dirname($_SERVER['PHP_SELF']);
$dirs = explode('/', $dir);
echo $dirs[0]; // get first dir

答案 1 :(得分:1)

dirname功能可以满足您的需求

http://us3.php.net/manual/en/function.dirname.php

<?php
    $URL = dirname($_SERVER["REQUEST_URI"]);
?>

答案 2 :(得分:1)

使用parse_url$_SERVER['REQUEST_URI']获取路径,然后您可以使用explode获取路径段:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', substr($_SERVER['REQUEST_URI_PATH'], 1));

echo $segments[1];

答案 3 :(得分:0)

只是想另外建议检查带有前缀的“/”或“\” 并使用DIRECTORY_SEPARATOR:

$testPath = dirname(__FILE__);
$_testPath = (substr($testPath,0,1)==DIRECTORY_SEPARATOR) ? substr($testPath,1):$testPath;
$firstDirectory = reset( explode(DIRECTORY_SEPARATOR, dirname($_testPath)) );
echo $firstDirectory;

答案 4 :(得分:0)

一种简单而强大的方式是:

$currentWebDir = substr(__DIR__, strlen($_SERVER['DOCUMENT_ROOT']));

如果你担心DIRECTORY_SEPARATORS,你也可以这样做:

$currentWebDir = str_replace('\\', '/', substr(__DIR__, strlen($_SERVER['DOCUMENT_ROOT'])));

还要注意FrancescoMM提到的mod_rewrite问题