最近因為 Google Location Sharing 的 URL 預設是 zh 非常煩惱,後來找到方法是直接修改回傳的 URL 來解決這個問題。在這篇我們將討論如何使用 PHP 語言來與 Google Location Sharing 互動,並將預設語言由簡體中文(zh)修改為繁體中文(zh-TW)。我們將逐步解釋程式碼中的每個部分,以便讀者更好地了解其運作原理。
詳細程式碼
<?php /** * 將 Google Location Sharing 中的預設語言更改為繁體中文(zh-TW) * * @param string $originalURL 原始 URL * @param string $newLanguage 新語言代碼 * @param bool $debug 啟用或禁用除錯模式 * @return string|bool 更新後的 URL 或取得失敗時回傳 false */ function getUpdatedURL($originalURL, $newLanguage, $debug = false) { $ch = curl_init($originalURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_HEADER, true); $response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); if ($info['http_code'] == 302 && isset($info['redirect_url'])) { $newURL = str_replace('hl=zh', 'hl=zh-TW', $info['redirect_url']); if ($debug) { echo "Original URL: $originalURL\n"; echo "Redirect URL: " . $info['redirect_url'] . "\n"; echo "New Language: $newLanguage\n"; echo "Updated URL: $newURL\n"; } return $newURL; } else { if ($debug) { echo "Failed to retrieve updated URL.\n"; echo "HTTP Code: " . $info['http_code'] . "\n"; } return false; } } ?>
程式使用方法
<?php $originalURL = 'https://maps.app.goo.gl/qqqggCbbb8mffff66'; $newLanguage = 'zh-TW'; $debugMode = true; $updatedURL = getUpdatedURL($originalURL, $newLanguage, $debugMode); if ($updatedURL) { echo "Updated URL: $updatedURL"; } else { echo "Failed to retrieve updated URL."; } ?>
程式碼解釋
1. getUpdatedURL
函數
這個函數是主要的功能實現部分。它接收三個參數:
$originalURL
:原始的 Google Location Sharing URL。$newLanguage
:新的語言,這裡我們預設為 ‘zh-TW’。$debug
:是否啟用除錯模式,預設為關閉。
函數使用 cURL 執行 HTTP 請求,並禁用自動重定向。接著,它檢查回應的 HTTP 狀態碼,若為 302 且有重定向 URL,則將該 URL 中的 ‘hl=zh’ 取代為 ‘hl=zh-TW’。
如果啟用了除錯模式,則會輸出原始 URL、重定向 URL、新的語言和更新後的 URL。
2. 測試函數
在這部分,我們定義了一個測試函數,用於測試 getUpdatedURL
函數。我們提供了一個 Google Location Sharing 的原始 URL、新的語言 ‘zh-TW’,並可以選擇是否啟用除錯模式。
最後,我們呼叫 getUpdatedURL
函數,如果成功取得更新後的 URL,則輸出更新後的 URL;否則輸出錯誤訊息。
實際應用
這段程式碼的實際應用是在與 Google Location Sharing API 互動的過程中,修改預設的語言設定。這可能對於特定地區的使用者更友好,使得介面以他們熟悉的語言顯示。
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!