這可能是一些簡單的愚蠢的事情,但我無法自己弄清楚。停止在PHP中使用strpos()匹配的第一個字符串
我正在嘗試製作移動檢測腳本並取得了巨大成功。但經過深入檢查,我發現我的IF
條款中的一條似乎返回TRUE
,但匹配錯誤。
我有此數組:
private $arrAgent = array(
'sony',
'symbian',
'nokia',
'samsung',
'mobile',
'windows ce',
'blackberry',
'ericsson',
'danger',
'palm',
'series60',
'palmsource',
'pocketpc',
'smartphone',
'vodafone',
'iphone',
'ipad',
'android'
);
然後我有一個函數,將循環數組,並發現如果它匹配
private function detectMobileAgent() {
if ($this->MobileDevice === false) {
foreach ($this->arrAgent as $key => $value) {
if (strpos(Server::userAgent(), $value) !== false) {
$this->MobileDevice = true;
// echo $value;
break;
}
}
}
}
現在的問題是,我在iPad上發現了一個錯誤/ iPhone的userAgent,防止我得到一個清晰的閱讀。
iPad的用戶代理是這樣的:
mozilla/5.0 (ipad; u; cpu os 4_3_2 like mac os x; en-us) applewebkit/533.17.9 (khtml, like gecko) version/5.0.2 mobile/8h7 safari/6533.18.5
我從自帶的Xcode中的iOS模擬器,在我實際的iPad,我看到幾乎相同的用戶代理,只是操作系統版本和Safari版本是不同的。
現在我的問題是,在該用戶代理中,字符串位置返回匹配ipad
AND mobile
,我怎麼能得到它在第一個字符串匹配後停止?
通過「制止」你的意思是讓最左邊的字符串匹配? – mario 2012-01-15 04:00:17
您沒有使用[WURFL](http://wurfl.sourceforge.net/)的任何特定原因? – 2012-01-15 04:03:28
ya,但John Flatness指出,由於我在我的ipad之前有移動這個詞,因此找到第一場比賽後,循環會中斷。 – Eli 2012-01-15 04:03:46