2011-06-29 225 views
34

可能重複:
Simplest way to detect a mobile device檢測手機瀏覽器

我有一個網站,我想檢測使用哪種瀏覽器,將用戶重定向。 我有一個PHP索引,代碼必須在PHP中。 我發現很多網站,但他們不工作,或他們沒有檢測到許多移動瀏覽器。 你知道任何可以檢測許多移動瀏覽器的好代碼或教程嗎?

+0

不確定這是否太多,你需要什麼,但你可能想看看:http://wurfl.sourceforge.net/nphp/ – dimi

+0

看到:http://mobiledetect.net/似乎是最簡單的方式... – theINtoy

+0

麪糰相比之下,這更容易包括和實際工作!我願意爲@iamandrus投票作爲答案 – user613326

回答

55

有我的用戶代理代碼:

<?php 

/* USER-AGENTS 
================================================== */ 
function check_user_agent ($type = NULL) { 
     $user_agent = strtolower ($_SERVER['HTTP_USER_AGENT']); 
     if ($type == 'bot') { 
       // matches popular bots 
       if (preg_match ("/googlebot|adsbot|yahooseeker|yahoobot|msnbot|watchmouse|pingdom\.com|feedfetcher-google/", $user_agent)) { 
         return true; 
         // watchmouse|pingdom\.com are "uptime services" 
       } 
     } else if ($type == 'browser') { 
       // matches core browser types 
       if (preg_match ("/mozilla\/|opera\//", $user_agent)) { 
         return true; 
       } 
     } else if ($type == 'mobile') { 
       // matches popular mobile devices that have small screens and/or touch inputs 
       // mobile devices have regional trends; some of these will have varying popularity in Europe, Asia, and America 
       // detailed demographics are unknown, and South America, the Pacific Islands, and Africa trends might not be represented, here 
       if (preg_match ("/phone|iphone|itouch|ipod|symbian|android|htc_|htc-|palmos|blackberry|opera mini|iemobile|windows ce|nokia|fennec|hiptop|kindle|mot |mot-|webos\/|samsung|sonyericsson|^sie-|nintendo/", $user_agent)) { 
         // these are the most common 
         return true; 
       } else if (preg_match ("/mobile|pda;|avantgo|eudoraweb|minimo|netfront|brew|teleca|lg;|lge |wap;| wap /", $user_agent)) { 
         // these are less common, and might not be worth checking 
         return true; 
       } 
     } 
     return false; 
} 

?> 

如何使用:

<?php 
$ismobile = check_user_agent('mobile'); 
if($ismobile) { 
return 'yes'; 
} else { 
return 'no'; 
} 
?> 
+0

嘿,非常感謝。這真的對我有幫助。 – Gromdroid

+0

完全沒問題! – iamandrus

+0

不錯的實現。獎勵! – vlex

4

在工作中,我們使用WURFL - 有幾百萬不同的瀏覽器在那裏,你的更好重複使用那些有經驗的人在這方面所做的工作,而不是實施自己的解決方案。

+1

可能有助於顯示或鏈接到在PHP中使用WURFL來實現@Gromdroid所需的示例。 – cdmckay

28

我在PHP中寫了this script to detect a mobile browser

該代碼通過preg_match()ing基於用戶代理字符串檢測用戶。它在所有當前移動設備上都具有100%的準確性,並且我正在更新它以支持更多的移動設備。該代碼被稱爲isMobile和如下:

function isMobile() { 
    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); 
} 

您可以使用它像這樣:

// Use the function 
if(isMobile()) 
    // Do something for only mobile users 
else 
    // Do something for only desktop users 

將用戶重定向到您的移動網站,我這樣做:

// Create the function, so you can use it 
function isMobile() { 
    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); 
} 
// If the user is on a mobile device, redirect them 
if(isMobile()) 
    header("Location: http://m.yoursite.com/"); 

讓我知道你是否有任何問題和祝你好運!

+0

@AndrewBarber:看起來好像它滿足[此處]列出的所有要求(http://meta.stackexchange.com/questions/94022) –

+0

@robert ok。我的事情是,答案是非常重複的,但我明白:) –

+0

我不明白是什麼問題。多個問題詢問如何在PHP中重定向,所以我回答了。你會建議我這樣做嗎? –