php實現在不同國家顯示網站的不同語言版本
阿新 • • 發佈:2017-11-18
env com tip 字符 判斷 當前 location cli iss
首先,你的網站本身要擁有多個語言版本。不然的話你就只能用JS去轉化了。
1.通過ip去定位,這個要引用到第三方的接口進行數據的完整返回,但是不知道是我的網速太慢還是什麽原因,個人覺得這個方法會卡頓:
獲取訪問者的IP
function getIP() { if (isset($_SERVER)) { if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) { $realip = $_SERVER[‘HTTP_X_FORWARDED_FOR‘]; } elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) {$realip = $_SERVER[‘HTTP_CLIENT_IP‘]; } else { $realip = $_SERVER[‘REMOTE_ADDR‘]; } } else { if (getenv("HTTP_X_FORWARDED_FOR")) { $realip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("HTTP_CLIENT_IP")) { $realip = getenv("HTTP_CLIENT_IP"); }else { $realip = getenv("REMOTE_ADDR"); } } return $realip; } $ip = getIP();
通過獲得的IP去和第三方接口實現對接,返回的是json格式的數據,轉化格式,可以得到一個完整的數組,下面是取country這個鍵的值來判斷,可以是country_id。header到你想跳轉的語言版本的url。 $res0 = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$ip"); $res0 = json_decode($res0, true); //echo $res0[‘data‘][‘country‘];exit; if ($res0[‘data‘][‘country‘] == ‘美國‘ || $res0[‘data‘][‘country‘] == ‘英國‘) { header("location:/en"); }else if ($res0[‘data‘][‘country‘] == ‘德國‘) { header("location:/dw"); }else{ header("location:/"); }
2.通過獲取瀏覽器的meta進而判斷顯示哪種語言。這種可以是用js或者是用php都能實現的。我是用的php
用到PHP的$_SERVER[‘HTTP_ACCEPT_LANGUAGE‘]這個函數,獲取當前瀏覽器打開的網站的meta值,進而切割字符串做對比,然後header到指定的網站。
$lange = strtolower(substr($_SERVER[‘HTTP_ACCEPT_LANGUAGE‘], 0, 2)); if($lange==‘en‘) { header("location:/en"); }else if ($lange == ‘de‘) { header("location:/dw"); }
php實現在不同國家顯示網站的不同語言版本