使用php从查询字符串url中显示+符号

时间:2014-07-18 06:44:55

标签: php url request query-string

我试图在网址

中发送查询字符串

代表:url : localhost/myfile.php?number=8777,+9822,+9883

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

echo $_REQUEST['number'];

输出:

 8777,9822,9883

但预期的输出是:

8777,+9822,+9883

我怎样才能显示+符号。

更新:

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

我在php中提供webservice,

所以android / ios开发人员正在使用包含+ sign

的查询字符串发送请求

那我怎么处理这种情况呢?

3 个答案:

答案 0 :(得分:2)

+ is reserved. PHP is correct in translating an unencoded + sign to a space.

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

答案 1 :(得分:0)

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

<?php

var_dump($_GET['number']);

echo 'http://localhost/myfile.php?number='.urlencode('8777,+9822,+9883');

修改

如果这是您收到的网址,并且您无法执行任何操作,例如:

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

你会得到

  

8777,+ 9822,+ 9883

答案 2 :(得分:0)

抱歉,我不知道你要做什么,但这是一个建议

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

本地主机/ myfile.php?数= ODc3NywrOTgyMiwrOTg4Mw

// on myfile.php

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

//这将输出 - &gt; 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>';
}
?>

希望这有助于.... :)