如果我的网址为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 /
答案 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问题