【问题标题】:display + sign from the query string url using php使用 php 从查询字符串 url 显示 + 符号
【发布时间】:2014-07-18 06:44:55
【问题描述】:

我正在尝试在 url 中发送查询字符串

例如:url : localhost/myfile.php?number=8777,+9822,+9883

在 myfile.php 中,当我回显查询字符串时:

echo $_REQUEST['number'];

输出:

 8777,9822,9883

但预期的输出是:

8777,+9822,+9883

我如何也显示+号。

更新:

实际上该 url 是来自 android/ios 设备应用程序的网络请求,

我在 php 中提供 web 服务,

所以 android/ios 开发人员正在发送带有查询字符串的请求,其中包含 + sign

那么我该如何处理这种情况呢?

【问题讨论】:

  • 使用 urlencode 函数发送这样的值
  • url 编码你的url。localhost/myfile.php?number=8777,%2B9822,%2B9883
  • 您未能理解 HTTP。打卡回家。
  • 请检查我的更新问题
  • @prassu 我已经更新了我的答案

标签: php url request query-string


【解决方案1】:
+ is reserved. PHP is correct in translating an unencoded + sign to a space.

您可以为此使用 urlencode() urldecode()。 + 必须在 PHP 中作为编码值提交:%2B

【讨论】:

    【解决方案2】:

    然后您应该使用urlencode() 函数来创建该网址:

    <?php
    
    var_dump($_GET['number']);
    
    echo 'http://localhost/myfile.php?number='.urlencode('8777,+9822,+9883');
    

    编辑

    如果这是您收到的 url,但您无法使用它做任何事情,例如:

    echo substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'],'=')+1);
    

    你会得到

    8777,+9822,+9883

    【讨论】:

      【解决方案3】:

      对不起,我不知道你想做什么,但这里有一个建议

      // 其中base64_encode('8777,+9822,+9883') = ODc3NywrOTgyMiwrOTg4Mw

      localhost/myfile.php?number=ODc3NywrOTgyMiwrOTg4Mw

      // 在 myfile.php 上

      echo base64_decode($_REQUEST['number']);

      // 这将输出 -> 8777,+9822,+9883

      更新 --------------- 如果你别无选择,你可以使用这个

      <?php
      // get URL query string
      $params = $_SERVER['QUERY_STRING']; 
      
      // if you have $params = www.mydomain.com/myfile.php?number=9988,+9876,+8768
      $temp = explode('=', $params);
      echo $temp[1] .'<hr>';
      
      
      // if you have $params = www.mydomain.com/myfile.php?number=9988,+9876,+8768&number2=123,+456,+789
      $params2 = $_SERVER['QUERY_STRING']; 
      $temp3 = explode('&', $params2);
      foreach($temp3 as $val){
          $temp4 = explode('=', $val);
          // # // $GET = $temp4[0]; // if you need the GET VALUES
          $VALUE = $temp4[1];
          echo $VALUE .'<br>';
      }
      ?>
      

      希望这会有所帮助.... :)

      【讨论】:

      • 基本上 moto 是什么:从一个 android/ios 应用程序,我得到一个 webrequest:像 www.mydomain.com/myfile.php?number=9988,+9876,+8768 所以我需要获取所有数字,包括 +sign
      猜你喜欢
      • 2014-05-30
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多