我尝试使用php中的curl读取XML文档并将内容转换为JSON。 在这里,我想将URL与变量连接起来。
但是当添加变量时,它会检索null。但当我硬编码文本时,它的工作原理。
这是我的代码。
$city = "paris";
$url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text=%22{$city}%22)";
print_r($url);
// $url ="https://www.w3schools.com/xml/plant_catalog.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url); // get the url contents
$data = curl_exec($ch); // execute curl request
curl_close($ch);
$xml = simplexml_load_string($data);
echo json_encode($xml);
这是我的网址
https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text=%22{$city}%22)
当我添加" paris"而不是{$ city}
请帮我解决这个问题。
答案 0 :(得分:1)
您需要解码网址并连接并编码网址,如:
$city = "paris";
$url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text=%22{$city}%22)";
$url1 = urldecode($url);
print_r(urlencode($url1));
答案 1 :(得分:0)
在这里还有另一个问题。 URL与变量正确连接。
但事情是我通过POST方法对变量赋值。当通过POST方法发送测试时,它最后包含新行。因为当我向urs添加变量时,它分为2部分。
我通过" trim"解决了这个问题。方法
$city = trim(preg_replace('/\s\s+/', ' ', $_REQUEST['city']));
使用时就可以了。