2014-01-05 68 views
0

我有這樣的代碼一點,以獲得其瀏覽器用戶使用無法獲得歌劇的瀏覽器

$browserArray = array(
    'Windows Mobile' => 'IEMobile', 
    'Android Mobile' => 'Android', 
    'iPhone Mobile' => 'iPhone', 
    'Firefox' => 'Firefox', 
    'Opera' => 'OPR', 
    'Google Chrome' => 'Chrome', 
    'Internet Explorer' => 'MSIE', 
    'Opera' => 'Opera', 
    'Safari' => 'Safari' 
); 
foreach ($browserArray as $k => $v) { 

if (preg_match("/$v/", $agent)) { 
    break; 
} else { 
$k = "Unknown"; 
} 
} 
$browser = $k; 

但我不能讓歌劇,它返回歌劇爲Chrome瀏覽器。

對Opera的代理 「的Mozilla/5.0(Windows NT的6.1; WOW64)爲AppleWebKit/537.36(KHTML,例如Gecko)Chrome瀏覽器/ Safari瀏覽器31.0.1650.63/537.36 OPR/18.0.1284.68」

我怎麼能使得Opera是Opera而不是Chrome?

+1

我無法檢查正確的權利,但我有一種感覺'OPR/18.0.1284.68'可能是Opera的標識符('OPR')和版本號 – Bojangles

+2

還有一點比這還要多,看看http://stackoverflow.com/questions/8754080/how-to-get-exact-browser-name-and-version –

回答

1

您的數組聲明2個Opera鍵:

'Opera' => 'OPR', 
'Opera' => 'Opera', 

第二個是覆蓋冷杉,所以有效地你數組的樣子:

$browserArray = array(
    'Windows Mobile' => 'IEMobile', 
    'Android Mobile' => 'Android', 
    'iPhone Mobile' => 'iPhone', 
    'Firefox' => 'Firefox', 
    'Opera' => 'Opera', 
    'Google Chrome' => 'Chrome', 
    'Internet Explorer' => 'MSIE', 
    'Safari' => 'Safari' 
); 

所以你缺少OPR標識符和Chrome是一個匹配你的代理的人。

0

更簡單的辦法:

print_r(get_browser()); 

輸出這樣的事情:

Array 
    (
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$ 
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* 
    [parent] => Firefox 0.9 
    [platform] => WinXP 
    [browser] => Firefox 
    [version] => 0.9 
    [majorver] => 0 
    [minorver] => 9 
    [cssversion] => 2 
    [frames] => 1 
    [iframes] => 1 
    [tables] => 1 
    [cookies] => 1 
    [backgroundsounds] => 
    [vbscript] => 
    [javascript] => 1 
    [javaapplets] => 1 
    [activexcontrols] => 
    [cdf] => 
    [aol] => 
    [beta] => 1 
    [win16] => 
    [crawler] => 
    [stripper] => 
    [wap] => 
    [netclr] => 
) 
相關問題