2011-11-13 46 views
0

嗨即時嘗試編寫一個貨幣轉換php腳本,通過cURL利用谷歌計算器API。 (file_get_contents在我的託管服務器中不起作用)。cURL操作返回奇數格式,如何獲得正常結果?

的URL IM試圖讓數據來自是

http://www.google.com/ig/calculator?hl=en&q=1usd=?idr

裝載的從瀏覽器的結果:

{lhs: "1 U.S. dollar",rhs: "8 928.57143 Indonesian rupiahs",error: "",icc: true}

但我的腳本返回:

{lhs: "1 U.S. dollar",rhs: "8Â 928.57143 Indonesian rupiahs",error: "",icc: true}

爲你可以在rhs部分看到有空白的區別,和a有趣的角色,妨礙我的四捨五入操作。

爆炸&之前我的腳本舍等:($網址已被設置爲上述值)

$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); 

我如何得到相同的格式?

回答

2

您收到的是UTF-8編碼中的C2 A0。這是非破壞性空間(NBSP)。您可以使用utf8_decode()來應付或只是將您的網頁設置爲UTF-8字符集。

解碼後,字符變爲chr(0xA0)拉丁語-1。所以你可能想使用preg_split('/\s/u'而不是僅僅在空間上爆炸。

另一種替代方法是在通過cURL請求資源時添加Accept-Charset: ASCII標頭。 (然後Google在這裏返回一個普通的空間,只是Google的一個解決方案,但並不是很多網站都支持這種HTTP功能。)

+0

感謝幫助了一大堆! –