嗨,我试图写一个货币转换php脚本,利用谷歌计算器API通过cURL。(file_get_contents在我的主机服务器上不起作用).
我试图获取数据的URL是
http://www.google.com/ig/calculator?hl=en& q = 1美元= ? idr
从浏览器加载的结果:
{lhs: "1美元",rhs: "8 928.57143印尼盾",错误:",icc:真}
但是我的脚本返回:
{lhs: "1美元",rhs: "8Â 928.57143印尼盾",错误:",icc:真}
正如您在rhs部分看到的那样,有空格差异和一个有趣的a字符,妨碍了我的舍入操作。
我的脚本在爆炸&四舍五入etc: ($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);
如何获得相同的格式?
您收到的是UTF-8编码的C2 A0
。这就是不间断空间(NBSP)。您可以使用utf8_decode()
来处理,也可以将页面设置为UTF-8字符集。
解码后,字符变成Latin-1中的chr(0xA0)
。因此,您可能需要使用preg_split('/'s/u'
而不是仅仅在空间上爆炸。
另一种选择是在通过cURL请求资源时添加Accept-Charset: ASCII
标头。(然后谷歌在这里返回一个普通的空格。不过,这只是谷歌的一个解决方案,没有多少网站支持这样的HTTP功能。