這邊使用網路上的公開資訊查詢,有需要可以直接使用
查詢國家 https://restcountries.com
function getExchangeRateFree($input, $target = 'TWD') {
$debug = "";
$keywordMap = [
// 美元
'美元' => 'USD', '美金' => 'USD', '美國' => 'USD',
// 日圓
'日圓' => 'JPY', '日幣' => 'JPY', '日本' => 'JPY',
// 台幣
'台幣' => 'TWD', '新台幣' => 'TWD', '台灣' => 'TWD',
// 歐元
'歐元' => 'EUR', '歐洲' => 'EUR',
// 人民幣
'人民幣' => 'CNY', '中國' => 'CNY', 'RMB' => 'CNY',
// 英鎊
'英鎊' => 'GBP', '英國' => 'GBP', 'UK' => 'GBP',
// 澳幣
'澳幣' => 'AUD', '澳洲' => 'AUD', '澳大利亞' => 'AUD',
// 港幣
'港幣' => 'HKD', '香港' => 'HKD', 'HK' => 'HKD',
// 新加坡幣
'新幣' => 'SGD', '新加坡' => 'SGD', 'Singapore' => 'SGD',
// 韓元
'韓元' => 'KRW', '韓國' => 'KRW', '南韓' => 'KRW',
// 泰銖
'泰銖' => 'THB', '泰國' => 'THB',
// 加幣
'加幣' => 'CAD', '加拿大' => 'CAD', 'CA' => 'CAD',
// 瑞士法郎
'瑞士法郎' => 'CHF', '瑞士' => 'CHF',
// 紐元
'紐幣' => 'NZD', '紐西蘭' => 'NZD',
// 馬來幣
'馬幣' => 'MYR', '馬來西亞' => 'MYR',
];
$input = trim($input);
$currencyCode = null;
// Step 0: 如果輸入是三個英文字母,直接當作幣別
if (preg_match('/^[A-Z]{3}$/i', $input)) {
$currencyCode = strtoupper($input);
}
// Step 1: 先查 keywordMap
if (!$currencyCode) {
foreach ($keywordMap as $kw => $code) {
if (mb_stripos($input, $kw) !== false) {
$currencyCode = $code;
break;
}
}
}
// Step 2: 如果還沒找到,查國家對應幣別
if (!$currencyCode) {
if($inputCountry_code != null){
$input = $inputCountry_code;
}
$apiUrl = "https://restcountries.com/v3.1/alpha/" . urlencode($input);
$json = @file_get_contents($apiUrl);
if ($json) {
$data = json_decode($json, true);
if (!empty($data[0]['currencies'])) {
$currencyCode = array_keys($data[0]['currencies'])[0];
}
}
}
// Step 3: 如果還是沒找到,直接用輸入的值
if (!$currencyCode) {
$currencyCode = strtoupper($input);
}
// Step 4: 查匯率
$url = "https://open.er-api.com/v6/latest/".$target;
$json = @file_get_contents($url);
if (!$json) return "⚠️ 匯率伺服器無回應";
$data = json_decode($json, true);
if (!isset($data['rates'][$currencyCode])) {
return "⚠️ 找不到 {$currencyCode} 對 {$target} 匯率";
}
$rate = round((1/$data['rates'][$currencyCode]), 4);
$timestamp = strtotime($data['time_last_update_utc']);
$date = date('Y-m-d', $timestamp);
return $debug."💱 {$currencyCode} 對 {$target} 匯率:{$rate}\n📅 更新日期:{$date}";
}
