如何从没有$ _GET变量的url获取文件名?

时间:2016-07-18 07:39:09

标签: php url

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)?

5 个答案:

答案 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”