【问题标题】:PHP - Getting Current URLPHP - 获取当前 URL
【发布时间】:2023-03-12 13:39:02
【问题描述】:

这似乎是一个常见问题,但它们似乎都不是我想要的。如果有网站:

www.example.com/test.php

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

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

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

【问题讨论】:

  • 当您不要求提供网址时,为什么主题中有“当前网址”这个问题?还有,如果有mod_rewrite强制url www.exemple.com/test,改写成test.php,你要的是test.php还是test?

标签: php


【解决方案1】:

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

$filename = basename($_SERVER['REQUEST_URI']);

http://www.example.com/testing01.php 和 http://www.example.com/x/y/z/testing01.php 都会给你:

testing01.php

【讨论】:

  • 它与最佳答案大致相同,但最佳答案被分解更多以供参考 IMO
  • @Howdy_McGee:我不同意。基本区别在于我们真正展示的内容。您询问了“获取当前 URL”。根据the documentation:$_SERVER['REQUEST_URI']获得“为了访问该页面而给出的URI;例如,'/index.html'。”,而$_SERVER['PHP_SELF']等于“ 当前正在执行的脚本的文件名,相对于文档根目录。(...)",可能与上述相同,也可能不同。我解释了我的答案的不同之处(在关于mod_rewrite的部分)。
  • @Tadeck:正确,对于 URL,您必须使用 REQUEST_URI,这可能导致执行名称完全不同的 PHP 脚本。
【解决方案2】:
$file = $_SERVER["SCRIPT_NAME"];
$break = explode('/', $file);
$pfile = $break[count($break) - 1]; 

【讨论】:

  • 返回为“/folder1/folder2/test.php”
  • @Howdy_McGee:你确定吗? $pfile 应该只保留test.php。
  • @Howdy_McGee 经过测试,对我有用:localhost/test1/test2/file.php prints "file.php"
【解决方案3】:
$query = $_SERVER['PHP_SELF'];
$path = pathinfo( $query );
$what_you_want = $path['basename'];

瞧。

【讨论】:

  • 没问题,别忘了设置为答案! :)
  • 短版:$what_you_want = basename($_SERVER['PHP_SELF']);
  • 重要的是要知道,这将返回文件的实际名称,而不是 URL 的一部分。有关详细信息,请查看my answer 下的this comment。获取部分URL(不一定是文件名)的方式,看my answer。
  • -1 因为 $_SERVER['PHP_SELF'] 不返回 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
相关资源
最近更新 更多