您好我正试图通过cURL利用Google Calculator API编写转换PHP脚本的货币。 (file_get_contents在我的托管服务器中不起作用)。
尝试从中获取数据的网址是
http://www.google.com/ig/calculator?hl=en&q=1usd=?idr
从浏览器加载的结果:
{lhs:“1美元”,rhs:“8 928.57143印度尼西亚卢比”,错误: “”,icc:true}
但是我的脚本返回:
{lhs:“1美元”,rhs:“8 928.57143印度尼西亚卢比”,错误: “”,icc:true}
正如你在rhs部分看到的那样,存在白色空间差异,以及一个有趣的A字符,妨碍了我的舍入操作。
爆炸前我的剧本&舍入等:( $ url已设置为上述值)$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $this->url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 10);
$rawresult = curl_exec($ch);
curl_close($ch);
我如何获得相同的格式?
答案 0 :(得分:2)
您收到的内容是C2 A0
采用UTF-8编码。这是不间断的空间(NBSP)。您可以使用utf8_decode()
来处理或仅将页面设置为UTF-8字符集。
解码后,该字符在Latin-1中变为chr(0xA0)
。所以你可能想要使用preg_split('/\s/u'
而不是仅仅在空间上爆炸。
另一种方法是在通过cURL请求资源时添加Accept-Charset: ASCII
标头。 (然后谷歌在这里返回一个普通的空间。虽然只是谷歌的一个解决方案,但没有多少网站尊重这些HTTP功能。)