http://localhost/mc/site-01-up/index.php?c=lorem-ipsum
$address = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$stack = explode('/', $_SERVER["REQUEST_URI"]);
$file = array_pop($stack);
echo $file;
结果 - index.php?c=lorem-ipsum
如果可能,使用index.php
如何获取没有$_GET
变量的文件名(array_pop
)?
答案 0 :(得分:3)
另一种可以获取文件名的方法是使用parse_url - 解析URL并返回其组件
<?php
$url = "http://localhost/mc/site-01-up/index.php?c=lorem-ipsum";
$data = parse_url($url);
$array = explode("/",$data['path']);
$filename = $array[count($array)-1];
var_dump($filename);
结果
index.php
修改强> 很抱歉发布此答案,因为它几乎与所选答案完全相同。我没有看到答案如此张贴。但我不能删除它,因为它被主持人视为一种不好的做法。
答案 1 :(得分:2)
这样做的一种方法是简单地获取文件的basename()
,然后使用正则表达式删除所有查询部分,或者更好地将$_SERVER['PHP_SELF']
结果传递给{{ 1}}功能。虽然第二种方法似乎更直观,但两者都会产生相同的结果。
basename()
答案 2 :(得分:2)
试试这个,未经测试:
$file = $_SERVER["SCRIPT_NAME"];
$parts = Explode('/', $file);
$file = $parts[count($parts) - 1];
echo $file;
答案 3 :(得分:2)
我将按照以下parse_url()
(易于理解): -
<?php
$url = 'http://localhost/mc/site-01-up/index.php?c=lorem-ipsum';
$url= parse_url($url);
print_r($url); // to check what parse_url() will outputs
$url_path = explode('/',$url['path']); // explode the path part
$file_name = $url_path[count($url_path)-1]; // get last index value which is your desired result
echo $file_name;
?>
输出: - https://eval.in/606839
注意: - 使用您的指定网址进行测试。检查您最后的其他类型的网址。感谢。
答案 4 :(得分:0)
如果您尝试使用不带变量名的GET方法,则另一个选择是使用$ _SERVER [“ QUERY_STRING”]
http://something.com/index.php?=somestring
$ _ SERVER [“ QUERY_STRING”]将返回“ somestring”