如何使用 PHP curl 获取含有方括号查询的数据?
如何使用 PHP curl 获取含有方括号查询的数据?
我尝试使用PHP中的libcurl获取数据,并且我的查询中包含查询括号。当我使用Postman发送时,我得到了对象,但是使用curl时,我得到了400错误,表示这是一个错误的请求。但是当我使用?conditions[prs_id]=7&conditions[date]=2019-03-26
时,我得到了答案和请求的对象。所以问题在于带有括号[2019-03-26 TO 2019-04-03]
的值。我尝试过进行URL编码,将括号更改为URL代码,但没有起作用。如何在PHP中正确地使用libcurl发送这个请求?在Postman中可以正常工作。
在使用PHP的CURL库获取数据时,有时可能会遇到查询参数中包含方括号的情况。这可能会导致问题,因为方括号在URL中有特殊的含义,需要进行转义或处理。
解决这个问题的方法是使用PHP的http_build_query
函数来构建URL中的查询参数。该函数可以将参数数组转换为经过正确编码的查询字符串。
下面是一个示例代码来说明如何使用http_build_query
函数来解决这个问题:
$params = array( 'name' => 'John', 'age' => 30, 'hobbies' => array('reading', 'writing', 'coding') ); $queryString = http_build_query($params); $url = 'http://example.com/api?' . $queryString; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); echo $response;
在上面的示例中,我们首先创建了一个包含参数的数组$params
,其中包含了一个名为"hobbies"的参数,它的值是一个包含多个爱好的数组。然后,我们使用http_build_query
函数将$params
数组转换为查询字符串$queryString
。
接下来,我们将查询字符串添加到URL中,并使用CURL库进行数据获取。最后,我们将获取到的数据打印出来。
通过使用http_build_query
函数,我们可以确保查询参数中的方括号被正确处理,使得我们能够成功获取到数据。