从string获取变量值

时间:2015-11-09 20:58:08

标签: php

我使用cURL获取一些API数据,并返回以下字符串中的输出:

$response = "oauth_token=xxx&oauth_token_secret=yyy&oauth_expires_in=3600&xoauth_request_auth_url=https%3A%2F%2Fapi.login.yahoo.com%2Foauth%2Fv2%2Frequest_auth%3Foauth_token%3Dxxx&oauth_callback_confirmed=true";

如何从上面的字符串中获取每个键的值,例如我想获得xoauth_request_auth_url值。目前,我是按照以下方式进行的:

$arr = explode('&', $response);

$url = $arr[3];     
$url = explode('=', $url);

$xoauth_request_auth_url = $url[1]; //final result

我的问题:

  1. 是否有一种有效的方法来获得上述价值(如果在任何变量值中有&,我担心上述方法将无效?)

  2. 如何将URl值转换为url格式?例如,目前它是:

  3. https%3A%2F%2Fapi.login.yahoo.com

    我想将其转换为:

    https://api.login.yahoo.com

3 个答案:

答案 0 :(得分:3)

使用parse_str,如下所示:

$values = array();
parse_str($response, $values);
var_dump($values);

此外,如果您需要从任何值中删除URL编码字符,请使用urldecode

答案 1 :(得分:1)

parse_str()将URL查询字符串解析为数组,并urldecode()获取解码后的字符:

parse_str($response, $array);
$array = array_map('urldecode', $array);

print_r($array);

收率:

Array
(
    [oauth_token] => xxx
    [oauth_token_secret] => yyy
    [oauth_expires_in] => 3600
    [xoauth_request_auth_url] => https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=xxx
    [oauth_callback_confirmed] => true
)

答案 2 :(得分:0)

http://php.net/manual/en/function.parse-str.php

或者你可以建立自己的功能(我可以给你指导,如果解析不能满足你的需求)

关于你的第二个问题,它也回答了第一个问题的一部分。 Uri组件正在编码,因此您将找不到(或不应该找到)实际的&字符。像解码网址一样明智。使用 http://php.net/manual/en/function.urldecode.php 并编码其功能对urlencode