我使用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
我的问题:
是否有一种有效的方法来获得上述价值(如果在任何变量值中有&
,我担心上述方法将无效?)
如何将URl值转换为url格式?例如,目前它是:
https%3A%2F%2Fapi.login.yahoo.com
我想将其转换为:
https://api.login.yahoo.com
答案 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