PHP:获取当前目录索引文件名

时间:2018-12-25 04:03:25

标签: php indexing directory filenames

我一定不能对这个问题措辞正确,因为我找不到答案,但是肯定有人问过。如果它是目录的索引文件,如何从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上。有没有一种方法可以准确地确定这一点?

4 个答案:

答案 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的不同输出或提供的路径。