我一定不能对这个问题措辞正确,因为我找不到答案,但是肯定有人问过。如果它是目录的索引文件,如何从URL获取当前文件名?
即如果我在www.example.com/index.html
上,它将获得index.html。 $url = basename($_SERVER['REQUEST_URI']);
但是如果我在www.example.com上,那将不起作用。到目前为止,我唯一想出的就是这样的东西:
$url = basename($_SERVER['REQUEST_URI']);
if($url == "") {
$filename = "index.html";
}
但这显然是一个不好的解决方案,因为我实际上可能在index.htm或index.php上。有没有一种方法可以准确地确定这一点?
答案 0 :(得分:2)
$ _ SERVER ['SCRIPT_FILENAME']将确定当前正在执行的PHP文件的完整路径。 $ _SERVER ['SCRIPT_NAME']仅返回文件名。
答案 1 :(得分:0)
这是其他方法之一。
$url = basename($_SERVER['REQUEST_URI']);
$urlArray = explode("/",$url));
$urlArray = array_reverse($urlArray);
echo $urlArray[0];
答案 2 :(得分:0)
不幸的是,服务器无法始终提供$_SERVER
阵列条目。有些可以省略,有些则可以。但是,通过一些测试,您可以轻松找出服务器将为这些条目输出的内容。在我的服务器(通常是Apache)上,我发现$_SERVER['DOCUMENT_ROOT']
通常会为我提供我所需要的URI的基础。在我工作的生产环境(XAMPP)中,这对我也很好。由于我的URI将具有localhost根目录。我见过有人在这种情况下鼓励DOCUMENT_ROOT
。您可以阅读有关$_SERVER
数组here的全部信息。
在此示例中,我得到以下结果:
echo $_SERVER['DOCUMENT_ROOT'] ; // outputs http://example.com
如果您在生产环境中工作,这将非常有帮助,因为在上线时您无需修改URL:
echo $_SERVER['DOCUMENT_ROOT'] ; // outputs C:/xampp/htdocs/example
'DOCUMENT_ROOT'当前在其下的文档根目录 脚本正在执行,如服务器的配置文件中所定义。
答案 3 :(得分:0)
您可以使用/
找到斜线strrchr()
的最后一次出现,而仅使用substr()
提取其余的斜杠。 substr()
中的可选参数指示从何处开始。对于一个,我们跳过斜杠/
。如果要保留它,只需将参数设置为0
。
echo substr( strrchr( "http://example.com/index.html" , "/" ) , 1 ) ; // outputs index.html
编辑:考虑到并不是每个服务器都会为$_SERVER
提供实体,所以我的方法可能更可靠。也就是说,如果您传递给strrchr()
的URL是可靠的。无论哪种情况,请确保您测试$_SERVER
的不同输出或提供的路径。