PHP - 获取当前URL

How*_*Gee 37 php

这似乎是一个常见的问题,但它们似乎都不是我正在寻找的.如果有网站:

www.example.com/test.php

我想拉"test.php",如果它是这样的:

www.example.com/folder/folder1/test.php

我想再次拉"test.php",但一切似乎都拉出了确切的路径,而不仅仅是页面.有什么建议?

Bri*_*ham 46

$query = $_SERVER['PHP_SELF'];
$path = pathinfo( $query );
$what_you_want = $path['basename'];
Run Code Online (Sandbox Code Playgroud)

瞧.

  • 更短版本:`$ what_you_want = basename($ _ SERVER ['PHP_SELF']);` (47认同)
  • 重要的是要知道,这会返回文件的实际名称,而不是URL的一部分.有关详细信息,请参阅[我的回答]下的[此评论](http://stackoverflow.com/questions/6475221/php-getting-current-url#comment25586710_6475257)(http://stackoverflow.com/a/6475257/548696).有关获取部分URL(不一定是文件名)的方法,请查看[我的答案](http://stackoverflow.com/a/6475257/548696). (7认同)
  • -1因为$ _SERVER ['PHP_SELF']不返回URL. (5认同)

Tad*_*eck 41

这将获取所请求文件的名称(基于调用的URL,而不是文件的真实位置 - 以防您使用mod_rewrite):

$filename = basename($_SERVER['REQUEST_URI']);
Run Code Online (Sandbox Code Playgroud)

对于这两个http://www.example.com/testing01.phphttp://www.example.com/x/y/z/testing01.php会给你:

testing01.php
Run Code Online (Sandbox Code Playgroud)

  • 这是接受的答案的两倍,+ 1. (4认同)
  • @Howdy_McGee:我不同意.基本的区别是我们真正展示的.您询问了"_Getting Current URL_".根据[文档](http://php.net/manual/en/reserved.variables.server.php):`$ _SERVER ['REQUEST_URI']`获取"_为了访问此页面而给出的URI ;例如,'/ index.html'._",而`$ _SERVER ['PHP_SELF']`等于"_当前正在执行的脚本的文件名,相对于文档根目录.(...)_",可能与上述相同或不同.我在答案中解释了差异(在关于`mod_rewrite`的部分). (3认同)