首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 串接百度翻譯 API 完整範例:含 curl 回退與編碼處理

     編輯:PHP 相關知識

功能概覽

封裝 language($text, $from, $to) 函數,支援自動偵測語言 (auto) 或指定語言代碼 (如 zh、en、jp),內建 file_get_contents 與 curl 雙模式獲取回應,適用不同伺服器環境。

完整代碼

<?php
function translate($text, $from = 'auto', $to = 'auto') {
    $appid = 'YOUR_API_KEY'; // 替換為你的百度翻譯 API Key
    $encoded = urlencode($text);
    $url = "https://api.fanyi.baidu.com/api/trans/vip/translate?appid=$appid&q=$encoded&from=$from&to=$to&salt=12345&sign=" . md5($appid . $text . '12345' . 'YOUR_SECRET_KEY');
    
    $response = http_get($url);
    $data = json_decode($response, true);
    
    if (isset($data['trans_result'][0]['dst'])) {
        return $data['trans_result'][0]['dst'];
    }
    return false;
}

function http_get($url) {
    if (function_exists('curl_init')) {
        $ch = curl_init($url);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_SSL_VERIFYPEER => false,
        ]);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }
    return file_get_contents($url); // 兜底
}

// 測試
echo translate('你好,世界', 'zh', 'en'); // 輸出: Hello, world
?>

重要補充 (原文代碼已過時)

  • API 端點更新:百度翻譯現行 API 為 https://api.fanyi.baidu.com/api/trans/vip/translate,需 appid + salt + sign (MD5) 簽名驗證,原文使用的 client_id 參數已棄用。
  • 編碼處理:請求與回應均建議統一使用 UTF-8,若來源文字為 BIG5/GBK,請先 mb_convert_encoding($text, 'UTF-8', 'auto')。
  • 錯誤處理:正式環境請檢查 $data['error_code'],常見錯誤碼:52001 (逾時)、52002 (服務不可用)、54000 (參數錯誤)、54001 (簽名錯誤)、58000 (IP 未授權)。
  • 頻率限制:免費版通常限制 1 QPS,高併發請使用隊列或升級付費版。

替代方案

若需更穩定、支援語言更多的服務,可考慮 Google Cloud Translation API、DeepL API 或 Microsoft Translator,皆提供官方 PHP SDK,簽名與計費機制更透明。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved