PHP Curl返回URL剥离&times(解码/编码)

yqkkidmi  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(128)

我一直在寻找解决办法,但没有找到。我有一个curl post请求,该请求返回一个url。url中有一个名为timestamp的参数。。它将&timestamp转换为一个xtamp,就好像它将&times编码为x(乘法)一样。我要阻止这一切的发生。我需要原始数据,但Curl正在返回

https://example.com?var=4134134341xtamp=1235341431341

字符串
当它应该返回时

https://example.com?var=4134134341&timestamp=1235341431341


我需要解决这个问题,这样我就可以得到一个完整的URL。下面是我的代码:

//
  $data = array(
     'partnerId' => '2445584555550',
     'customerId' => '091874314838'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.xyz.com/connect/v2/generate");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Accept: */*','Accept-Encoding : gzip', 'xyz-App-Key:2b152a934f248ec62584852e5997e93', 'Accept:application/json', 'xyz-App-Token:'.$tk));
$response = curl_exec($ch);
$response = json_decode($response, true);
//
echo $response;
echo "<pre>";print_r($response);
print_r($response['link']);


正如你所看到的,我已经尝试了几种不同的方式来回显它,但它仍然将我的&timestamp转换为xtamp并破坏了我的URL。请帮忙,非常感谢。

6ojccjat

6ojccjat1#

curl没有这样做,浏览器将URL中的&times解释为HTML实体&times;,并将其呈现为×字符。
为了避免这种情况,也为了防止XSS漏洞,在显示可能包含特殊字符的文本时,请始终使用htmlspecialchars()

echo htmlspecialchars($response, ENT_QUOTES | ENT_SUBSTITUTE | ENT_DISALLOWED | ENT_HTML5);

字符串

相关问题