我有一个带空格字符的网址,我想在进行API调用时正确编码(在这种情况下,将''替换为'%20',以便正确处理空格字符。
$url = 'https://www.someapi.com?param=this and that';
当使用urlencode($ url)函数时,我得到了这个不明显的URL表示
"https%3A%2F%2..."
我最终无法解决。
PHP中是否有一个URL编码函数只替换空格和引号而不是对整个字符串进行突然更改?
答案 0 :(得分:0)
您可以解析请求网址,只对查询字符串“值”进行编码。
$url = "https://www.someapi.com?param=this and that";
$baseUrl = explode("?",$url)[0];
parse_str(parse_url($url,PHP_URL_QUERY),$args);
foreach ($args as $key=>&$arg){
$arg= urlencode($arg);
}
echo $baseUrl."?".http_build_query($args);
结果:
https://www.someapi.com?param=this%2Band%2Bthat