【问题标题】:How to get values after .php如何在 .php 之后获取值
【发布时间】:2018-09-18 08:07:14
【问题描述】:

我想知道如何从 .php 之后的 URL 中获取所有值?

示例: http://localhost/api/test

API = api.php,只需 .htaccess。

我想知道如何从 URL 中仅获取“测试”,或者如果更多,则获取所有值,/test/test1/test2

我尝试过$_SERVER['PATH_INFO'],但它对我不起作用,错误输出表明$_SERVER['PATH_INFO'] 未定义。有什么解决办法吗?

【问题讨论】:

  • $_GET 如果它是这样设置的... $_SERVER['REQUEST_URI'] 如果不是
  • 你可以参考here
  • 但我没有做 api.php?a=test1&b=test2 所以 $_GET 没用。我试图在localhost/api 之后获取路径
  • 那么你最好的机会是先得到$url = $_SERVER['REQUEST_URI'];,然后是$url = epxlode(...,然后使用$url[4]等等。或者你可以先用''替换'localhost/api'。
  • @MikeRunac 如果你在 url 中有? ... $_GET 应该没用...

标签: php


【解决方案1】:

试试这个

使用 parse_url() 可以检索 url 组件

$url = "http://localhost/api/test";
$myurl = parse_url($url);
echo  $myurl['path'];

【讨论】:

    【解决方案2】:

    您可以在 $_SERVER 变量中找到您要查找的所有内容 (php.net) 只需 print_r $_SERVER 的值,看看那里有什么信息......你会很容易看到你需要什么。 然后,您可以使用字符串函数在 URL 或查询字符串中隔离您需要的部分,以获取您需要的任何内容。

    还有……

    如果 .htaccess 与重写一起使用,它们可能会在 $_GET 变量中发送。可以肯定的是,您需要在进行重写的地方发布一些 .htaccess。

    【讨论】:

      【解决方案3】:

      简单的步骤

      第一步:写信.htaccess

      RewriteEngine on
      RewriteRule  ^(.+)/?$ test.php?url=$1
      

      第二步:test.php 文件,代码如下

      <?php
      
         $url = $_GET['url'];
         echo '<pre>';
             print_r($url);
         echo '</pre>';
      ?>
      

      注意:您可以在$url 变量上调用explode 函数

      rewrite module 必须在 Apache 服务器中开启。

      请注意,我认为这会解决您的问题

      脚本是不言自明的,但如果混淆,请告诉我。

      <?php
        $url = $_GET['url'];
      
        echo '<pre>';
            print_r($url);
        echo '</pre>';
      
        //echo '<pre>';
            ///print_r(explode('/',$url,4));
        //echo '</pre>';
      
        list($file,$controller,$method,$params) = explode('/',$url,4);
      
      
        echo "<hr/>file:" . $file;
        echo "<hr/>controller:" . $controller;
        echo "<hr/>method:" . $method;
      
        echo "<hr/>params:" ;
        echo '<pre>';
            print_r($params);
        echo '</pre>';
      
        ?>
      

      输出 2

      【讨论】:

      • @mike-runac 支持如果它真的有帮助然后标记为答案和拇指。
      • 将所有内容作为 URL 参数传递有点old skool - 您通常会将所有不是现有文件/目录/(或符号链接)的内容重定向到路由检查$_SERVER['REQUEST_URI'] 以确定要执行的操作的脚本。
      • 但老派的技巧总是能解决问题。 :) 顺便说一句,你的方式也是对的
      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      相关资源
      最近更新 更多