程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 調用google在線翻譯功能

php 調用google在線翻譯功能

編輯:關於PHP編程

我們主要是用到php 調用google在線翻譯功能哦,post一個遠程地址再用curl讀取google翻譯後的值就OK了。

我們主要是用到php 調用google在線翻譯功能哦,post一個遠程地址再用curl讀取google翻譯後的值就OK了。

class Google_API_translator {


public $out = "";

    function translate() {
        $this->out = "";
        $text = urlencode("computer");//要翻譯的單詞

        $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=en&tl=zh_CN";

//拼湊google翻譯的api url         
        $gphtml = $this->postPage(array("url" => $google_translator_url));

        $this->out = $gphtml;

return $this->out;
    }
    function postPage($opts) {
        $html = "";

if($opts["url"] != "") {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $opts["url"]);

            $html = curl_exec($ch);

 

if(curl_errno($ch)) $html = "";
            curl_close ($ch);
        }

return $html;
    }
}

$g = new Google_API_translator();

$g->translate();

很完美,返回的結果中沒有任何編碼問題。從google返回的中文編碼完全正確。
接下來,能不能反向翻譯,從中文到英文哪?

 

class Google_API_translator {


public $out = "";

    function translate() {
        $this->out = "";
        $text = urlencode("計算機");//要翻譯的單詞

        $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=zh_CN&tl=en";

        echo $google_translator_url;
        $gphtml = $this->postPage(array("url" => $google_translator_url));

        $this->out = $gphtml;

return $this->out;
    }
    function postPage($opts) {
        $html = "";

if($opts["url"] != "") {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $opts["url"]);

            $html = curl_exec($ch);

 

if(curl_errno($ch)) $html = "";
            curl_close ($ch);
        }

return $html;
    }
}

$g = new Google_API_translator();

$g->translate();


問題出現了,返回的是一個亂碼。詭異的是,這次接受的是google發送過來的英文單詞,怎麼會有編碼錯誤?
是php的curl無法發送unicode編碼或者google在接受的過程中出現了問題嗎? 復制PHP內容到剪貼板 PHP代碼:echo $google_translator_url;

 

得到的url是 復制PHP內容到剪貼板 PHP代碼:http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=zh_CN&tl=en

 

直接把這個url輸入浏覽器的地址欄,沒有任何問題(IE,Firefox均能通過)。

假設途中unicode的傳送出現了解析方面的問題,在api的url上更改了一下,把"&sl=zh_CN&tl=en"更改為完全錯誤的參數 復制PHP內容到剪貼板 PHP代碼:http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=en&tl=en

 

奇怪了這次php頁面倒是能夠接受到google發回來的中文字符串,但是死活就是無法顯示使用正確的編碼參數google發送過來結果。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved