获取 URL 之前的参数
Get Parameters Before The URL
我收到这样的字符串:
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"
先谢谢了!
将问号编码为 %3F
。
url 中只允许有 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'];
I've seen that with the function parse_str()
I can't get the
parameters before &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
没有看到 $output
的确切值,我猜这是问题所在:
$raw = rawurldecode($output);
此处您正在解码字符串,将有效的查询字符串转换为未解码的字符串。
因为你想将结果解析为查询字符串 - 使用 parse_str()
- 你不应该先解码它,因为解码后它不再包含 parse_str()
.[=14= 的有效输入]
PHP 变成 QUERY_STRING,最后一个问号 之后的字符串 ,所以你有自己的 '?'和 'url' 参数中的一个,这就是为什么你只收到令牌的原因,还有一个!
首先对其进行编码以避免字符串中出现 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
。
我收到这样的字符串:
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"
先谢谢了!
将问号编码为 %3F
。
url 中只允许有 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'];
I've seen that with the function
parse_str()
I can't get the parameters before&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
没有看到 $output
的确切值,我猜这是问题所在:
$raw = rawurldecode($output);
此处您正在解码字符串,将有效的查询字符串转换为未解码的字符串。
因为你想将结果解析为查询字符串 - 使用 parse_str()
- 你不应该先解码它,因为解码后它不再包含 parse_str()
.[=14= 的有效输入]
PHP 变成 QUERY_STRING,最后一个问号 之后的字符串 ,所以你有自己的 '?'和 'url' 参数中的一个,这就是为什么你只收到令牌的原因,还有一个!
首先对其进行编码以避免字符串中出现 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
。