1
A
回答
1
我想你可以使用它使用IP,並打印出一個國家代碼
例子這個PHP腳本
http://api.hostip.info/country.php?ip=4.2.2.2
給人US
退房 http://www.hostip.info/use.html 更多信息。
1
找到了,可能是有用的。 點擊http://ipinfodb.com/ip_location_api.php!
2
您可以通過IP的地理定位或通過檢查正確的標題來完成此操作。
通常你需要後者,因爲它告訴你瀏覽器/系統使用哪種語言。當你想知道物理位置時,你只想使用地理位置。 標題存儲在$_SERVER['HTTP_ACCEPT_LANGUAGE']
。它包含逗號分隔的條目,例如:en-GB,en;q=0.8,en-US;q=0.6,nl;q=0.4
(我自己的)
HTTP Accept Language參數用逗號分隔它的語言,它的屬性由分號表示。 q值從0到1,其中1是最高的/最優選的。下面是一些天真的和未經考驗的代碼來解析它:
$langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$preffered = "";
$prefvalue = 0;
foreach($langs as $lang){
$info = explode(';', $lang);
$val = (isset($lang[1])?$lang[1];1);
if($prefvalue < $val){
$preferred = $lang[0];
$prefvalue = $val;
}
}
簡單多了是,如果你想測試一個特定的語言被接受,例如西班牙文:
if(strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], "es") !== false){
// Spanish is supported
}
1
我自己使用的一個庫,可以推薦,是MaxMind GeoLite Country。要獲取國家代碼,您只需要將2個文件複製到您的服務器,即php代碼geoip.inc和二進制數據GeoIP.dat。
使用該庫也非常簡單:
function ipToCountry()
{
include_once('geoip/geoip.inc');
$gi = geoip_open(__DIR__ . '/geoip/GeoIP.dat', GEOIP_STANDARD);
$result = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
return $result;
}
0
這將使用GEOIP並回落到accept_lang
class Ip2Country
{
function get($target)
{
$country = false;
if(function_exists('geoip_record_by_name'))
$country = $this->getFromIp($target);
if(!$country && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
$country = $this->getFromLang($_SERVER['HTTP_ACCEPT_LANGUAGE']);
return $country;
}
function getFromIp($target)
{
$dat = @geoip_record_by_name($target);
return (isset($dat['country_code'])) ? mb_strtolower($dat['country_code']) : false;
}
function getFromLang($str)
{
$info = array();
$langs = explode(',', $str);
foreach($langs as $lang)
{
$i = explode(';', $lang);
$j = array();
if(!isset($i[0])) continue;
$j['code'] = $i[0];
if(strstr($j['code'], '-'))
{
$parts = explode('-', $j['code']);
$j['lang'] = $parts[0];
$j['country'] = mb_strtolower($parts[1]);
}
$info[] = $j;
}
return (isset($info[0]['country'])) ? $info[0]['country'] : false;
}
}
$x = new Ip2Country();
var_dump($x->get('canada.ca'));
相關問題
- 1. PHP國際國家代碼2國家代碼的字符
- 2. 從IP檢查國家的PHP代碼
- 3. PHP - 檢測國家
- 4. 按國家/地區搜索國家/地區代碼
- 5. 轉換國家代碼國家名稱
- 6. 選擇國家和國家代碼?
- 7. IOS:國家代碼
- 8. ISO國家代碼
- 9. 將國家名稱轉換爲國家代碼縮寫php
- 10. NSIS通過IP檢測國家代碼
- 11. 國家和語言代碼檢測
- 12. 從國家或國家代碼獲取電話代碼 - Twilio
- 13. Maxminds GeoIP的PHP根據國家代碼
- 14. 如何檢索國家代碼ios示例
- 15. 如何從URL檢索語言環境(國家)代碼?
- 16. PHP狀態檢查國家
- 17. Google API國家檢測PHP
- 18. 在url中設置國家代碼並用國家代碼重寫它
- 19. 國家代碼清單 - C#
- 20. 獲取ISO國家代碼
- 21. 國家代碼驗證
- 22. 貝寶國家代碼
- 23. Rails查詢國家代碼
- 24. 顛覆國家代碼404
- 25. 得到iso3國家代碼
- 26. C++獲取國家代碼
- 27. 轉換ISO2國家代碼
- 28. Android SmsMessage國家代碼
- 29. 的TimeZoneInfo和國家代碼
- 30. django國家貨幣代碼
的[PHP代碼從IP查詢國家]可能重複(HTTP:/ /stackoverflow.com/questions/3378318/php-code-to-check-country-from-ip) –