【问题标题】:How do I get the filename without the params?如何在没有参数的情况下获取文件名?
【发布时间】:2011-05-03 13:20:10
【问题描述】:

我需要找到我包含的不带 GET 参数的文件的文件名。

例如: 如果当前 URL 是 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 和操作)添加到末尾网址: file.php?a=b&c=d?a=b&c=d?a=b&c=d?a=b&c=d...

我知道我可以简单地在“?”上爆炸或类似的东西

$file = explode("?", basename($_SERVER['REQUEST_URI']))

并使用数组的第一部分,但我似乎记得更容易,但是无法再次找到代码..

我是 PHP 新手,希望对您的代码进行解释。

谢谢, V

【问题讨论】:

    标签: php filenames


    【解决方案1】:
    basename(parse_url($url,PHP_URL_PATH));
    

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

    【讨论】:

      【解决方案2】:

      对我来说最好的解决方案:

      $file = basename(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH));
      

      【讨论】:

        【解决方案3】:

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

        $url = parse_url($url, PHP_URL_PATH);
        

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

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

        【讨论】:

        • 这是我找到的最接近的。我是这样做的:$url = parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH); $url = explode('/', parse_url($url, PHP_URL_PATH)); $url = 结束($url); error_log($url);
        【解决方案4】:

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

        请注意它的开头有一个“/”字符。

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

          • 是的,我试过了,发现如果包含你想要的文件,它就不起作用了。 (我的错,应该在帖子中提到)
          • 啊抱歉,那样的话你可以试试 basename($_SERVER['SCRIPT_NAME'])?编辑:实际上你甚至可以只做$_SERVER['SCRIPT_FILENAME'],据我所知它不包含任何路径信息。
          • $_SERVER['SCRIPT_NAME'] 做到了!谢谢!
          • 没问题!另外,忽略我的编辑,SCRIPT_FILENAME 似乎是SCRIPT_NAME 的别名,因此包含完整路径。
          • SCRIPT_NAME 是重写后的实际脚本(通常以 .php 结尾),REQUEST_URI 是在浏览器栏中显示的。两者都可能带有 GET 参数。
          【解决方案6】:
          basename($_SERVER['SCRIPT_NAME']);
          

          这样就可以了。

          此外,了解一些给定的变量总是好的。 php文件中的以下sn-p真的很有用。

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              这是我找到的最接近的。我是这样做的:

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

              【讨论】:

                【解决方案9】:

                获得不带参数的脚本名称的唯一方法是发出 POST 请求

                【讨论】:

                • 以上所有人都表明情况显然并非如此。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-02-11
                • 2018-06-22
                • 2022-12-22
                • 1970-01-01
                • 2013-08-26
                相关资源
                最近更新 更多