获取URL之前的参数

时间:2015-04-20 10:04:02

标签: php curl parameters get encode

我收到一个这样的字符串:

result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD

我使用此代码对url进行编码:

curl_setopt($ch, CURLOPT_URL, "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD"); 

//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// $output contains the output string 
$output = curl_exec($ch);
$raw = rawurldecode($output);
$pars = parse_url($raw);
parse_str($pars['query'],$result);

我看到使用函数parse_str()我无法在&url=之前获取参数。我如何得到response=OK?我需要知道我的网站是否可以继续进行操作。

有人问过,这是

var_dump($raw) -> string(112) "result=OK&token=330852&url=https://www.premiumline.eu/onshop/vas/login_mp?token=330852&acq=225583&track=12yy2333"

先谢谢!

4 个答案:

答案 0 :(得分:2)

  

我已经看到使用parse_str()功能我无法获得   &url=

之前的参数

不正确


您可以使用parse_str()来解析查询字符串的所有参数,即:

$queryStr = "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD";
parse_str($queryStr);
echo $result;
echo $token;
echo $url;

<强>输出:

OK
ABCD
http://www.example.com/shopping/vas?token=ABCD

DEMO

答案 1 :(得分:1)

将问号编码为%3F。 在网址中只允许使用1个问号(这是一个分隔符)。

$the_url = urlencode($url);

$str = "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD";

$params =  parse_str(urlencode($str));
$result = $params['result'];

答案 2 :(得分:0)

如果没有看到$output的确切值,我猜这就是问题所在:

$raw = rawurldecode($output);

在这里解码你的字符串,将有效的查询字符串转换为未解码的字符串。

由于您要将结果解析为查询字符串 - 使用parse_str() - 您不应该先解码它,因为解码后它不再包含parse_str()的有效输入。

答案 3 :(得分:0)

PHP获取为QUERY_STRING,字符串在最后一个问号后,因此您拥有自己的&#39;?&#39;和一个&#39; url&#39;参数,这就是你只接收令牌的原因,以及那个!

首先编码,以避免字符串中的url字符 result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD

示例

$urlParam = "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD";

$urlParamEncoded = urlencode($urlParam);
curl_setopt($ch, CURLOPT_URL, $urlParamEncoded); 

//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// $output contains the output string 
$output = curl_exec($ch);
$raw = rawurldecode($output);
$pars = parse_url($raw);
parse_str($pars['query'],$result);

然后,您可以在目标脚本文件中使用urldecode