如何从URL中获取当前网页目录?
问题描述:
如果我有一个网址是http://www.example.com/sites/dir/index.html,我想提取单词“网站”。我知道我必须使用正则表达式,但由于某种原因,我对它们的知识不适用于PHP。如何从URL中获取当前网页目录?
我试图使用方法:
$URL = $_SERVER["REQUEST_URI"];
preg_match("%^/(.*)/%", $URL, $matches);
但我必须做一些错误的。我也希望它有一个捕捉功能,如果它在主网站www.example.com,那么它会做“MAIN”字样
编辑:对不起,我已经知道dirname ...它提供完整的目录路径。我只想要第一个目录....所以如果它的www.example.com/1/2/3/4/5/index.html那么它只返回1,而不是/ 1/2/3/4/5/
答
使用dirname
功能是这样的:
$dir = dirname($_SERVER['PHP_SELF']);
$dirs = explode('/', $dir);
echo $dirs[0]; // get first dir
答
的目录名功能应该给你什么,你需要
http://us3.php.net/manual/en/function.dirname.php
<?php
$URL = dirname($_SERVER["REQUEST_URI"]);
?>
答
只是想建议额外检查一个前缀“/”或“\” 和使用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;
答
一种简单可靠的方法是:
$currentWebDir = substr(__DIR__, strlen($_SERVER['DOCUMENT_ROOT']));
如果你担心DIRECTORY_SEPARATORS,你也可以这样做:
$currentWebDir = str_replace('\\', '/', substr(__DIR__, strlen($_SERVER['DOCUMENT_ROOT'])));
另外要注意的由FrancescoMM
末尾加上斜杠请看我的编辑。 – ParoX 2010-07-15 20:56:46
@布赖恩:请看我更新的答案。 – Sarfraz 2010-07-15 21:02:28
请注意,尽管答案要求从URL获取路径,但答复是从文件系统中提供路径,因此虽然在这种情况下两者是相同的,但实际上这是错误的。如果您的url(http:// www.example.com/sites/dir/index.html)由另一个文件夹(ModRewrite)中的脚本处理,比如'/ www/home/scripts/wholesite.php',这个答案将返回“家”而不是“网站”。 PHP_SELF“是脚本”,而REQUEST_URI“是网址”。 – FrancescoMM 2017-03-17 08:22:05