如何在没有参数的情况下获取文件名?

时间:2011-05-03 13:20:10

标签: php filenames

我需要在没有GET参数的情况下找到我所包含的文件的文件名。

例如为: 如果当前网址为http://www.mysite.com/folder/file.php?a=b&c=d, 我想要file.php返回

我发现了什么:

basename($_SERVER['REQUEST_URI'])

返回:

file.php?a=b&c=d

在我的情况下: 我在购物车的部分中使用了表单中的文件名,因此每次单击“减少产品数量”按钮时,它会将表单的GET参数(productId和action)添加到结尾处。网址: file.php A = B&安培; C = d A = B&安培; 13 C = d A = B&安培; 13 C = d A = B和C = d ...

我知道我可以简单地在'?'

上爆炸或类似的东西
$file = explode("?", basename($_SERVER['REQUEST_URI']))

并使用数组的第一部分,但我似乎更容易回忆一些事情,但无法再找到代码..

我是PHP的新手,所以对您的代码的解释将不胜感激。

谢谢, V

9 个答案:

答案 0 :(得分:11)

您可以使用parse_url。在您的情况下,您可以使用:

$url = parse_url($url, PHP_URL_PATH);

要获取文件名,您可以执行以下操作:

$url = explode('/', parse_url($url, PHP_URL_PATH));
$url = end($url);

答案 1 :(得分:10)

也许您正在寻找$_SERVER['PHP_SELF']

请注意,它的开头有一个'/'字符。

答案 2 :(得分:5)

你试过一个简单的basename(__FILE__);吗?这将为您提供代码所在位置的文件名,因为它位于磁盘上。

要获取请求的文件,您可以使用basename($_SERVER['SCRIPT_NAME']);。这将始终获取所请求的文件,而不是包含代码的文件。

答案 3 :(得分:2)

basename($_SERVER['SCRIPT_NAME']);

这样就可以了。

此外,了解一些给定的变量总是好的。 php文件中的以下片段非常有用。

<pre><?php
print_r($_SERVER);
?></pre>

答案 4 :(得分:1)

basename(parse_url($url,PHP_URL_PATH));

parse_url($ url,PHP_URL_PATH)擦除参数。 basename()获取路径的文件名。

答案 5 :(得分:0)

查看$_SERVER中的其他一些值。

也许$_SERVER["PHP_SELF"]$_SERVER["SCRIPT_NAME"]会返回您想要的内容。

答案 6 :(得分:0)

这是我发现的最接近的。我是这样做的:

$url = parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH);
$url = explode('/', parse_url($url, PHP_URL_PATH));
$url = end($url);
error_log($url);

答案 7 :(得分:0)

最适合我的解决方案:

x=np.pi/2

答案 8 :(得分:-1)

获取没有参数的脚本名称的唯一方法是发出POST请求