2012-10-12 52 views
1

我想確定訪問者的區域。我的網站有4種語言版本,我想要檢測訪問者是否從英語國家或俄語或阿拉伯語或西班牙語國家訪問我的網站。什麼是最好的方式來做到這一點?php根據訪問者的語言重定向的最佳方式

+0

使用$ _SERVER ['REMOTE_ADDR'];並在IP列表的基礎上向您的訪問者做以下 – swapnesh

+0

我討厭那樣做的網站。給用戶選擇他想要的語言。 –

+0

您應該使用'HTTP_ACCEPT_LANGUAGE'並提供手動設置語言的選擇。當人們通過代理/ VPN /公司網關訪問時,GEOIP並不總是工作,這些網關並不反映他們實際說的語言,更不用說告訴你他們位於何處! – nickhar

回答

1

這是我們在腳本中使用做類似的檢測:

function get_preferred_lang() { 
    if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) { 
     preg_match_all('#([a-z-]+) *(?:; *q=([0-9.]+))?#', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches); 
     $accept = array_combine($matches[1], $matches[2]); 
     foreach ($accept as $key => $val) 
     $accept[$key] = $val == '' ? 1.0 : (float) $val; 
     arsort($accept); 
     return substr(array_shift(array_keys($accept)),0,2); 
     } else { 
     return 'unknown'; 
    } 
} 
-1

您可以使用$_SERVER['REMOTE_ADDR'];獲取用戶的IP地址,這個使用這個鏈接的基礎上,根據您的要求GEOIP進一步進行

相關問題