2015-07-10 25 views
1

我的用戶代理進行測試時,從Opera瀏覽器進行測試時,讀取:所有瀏覽器的名字從歌劇broswer

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.125 Safari/537.36 OPR/30.0.1835.88 

現在,我有以下腳本測試瀏覽器:

$browser_list = array(
      array('search_string' => 'chrome', 'bname' => 'Google Chrome', 'matchname' => 'chrome', 'ub' => 'Chrome'), 
      array('search_string' => 'firefox', 'bname' => 'Mozilla Firefox', 'matchname' => 'firefox', 'ub' => 'Firefox'), 
      array('search_string' => 'safari', 'bname' => 'Apple Safari', 'matchname' => 'Safari', 'ub' => 'Safari'), 
      array('search_string' => 'netscape', 'bname' => 'Netscape', 'matchname' => 'Netscape', 'ub' => 'Netscape'), 
      array('search_string' => 'opera', 'bname' => 'Opera', 'matchname' => 'Opera', 'ub' => 'Opera'), // Must be before IE 
      array('search_string' => 'MSIE', 'bname' => 'Internet Explorer', 'matchname' => 'IE', 'ub' => 'MSIE'), 
      array('search_string' => 'Mozilla', 'bname' => 'Internet Explorer', 'matchname' => 'IE', 'ub' => 'MSIE'), // Hack for IE 11 as the LAST one so you know not match the above 
     ); 

    // Next get the name of the useragent yes seperately and for good reason 
    foreach ($browser_list as $item) { 
    echo $item['search_string']; 
     if (stripos($userAgent, $item['search_string']) !== false) { 
      $bname = $item['bname']; 
      $matchname = $item['matchname']; 
      $ub = $item['ub']; 
      echo "breaking"; 
      break; 
     } 
    } 

但是,由於UserAgent包含所有的瀏覽器名稱,所以我正面臨着這個問題。

另外,爲什麼Opera的usergent如此怪異?

+0

爲什麼過於複雜的事情。 [這裏](https://github.com/cbschuld/Browser.php)是一個非常簡單的庫,它完全符合你的需求。 – Andrew

+0

@Andrew,抱歉不能使用任何圖書館...多數民衆贊成在這個問題上的限制 – Saswat

+0

男人,運氣不好。無論哪種方式,你都可以在源代碼中挖掘一下,看看他是如何處理它的。 – Andrew

回答

1

的Mozilla/5.0(Windows NT的5.1)爲AppleWebKit/537.36(KHTML,例如Gecko)Chrome瀏覽器/ Safari瀏覽器43.0.2357.125/537.36 OPR/30.0.1835.88

必須先搜索「OPR /「字符串在用戶代理中。 這是Opera與其他瀏覽器不同的地方。

如果找到該字符串,請停止搜索。其他,繼續。所以它不會與其他瀏覽器混淆。

相關問題