这可能是一些简单的愚蠢的事情,但我自己无法弄清楚。
我正在尝试制作一个移动检测脚本并取得了巨大的成功。但经过更深入的检查,我发现我的一个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
,我怎样才能让它在第一个字符串匹配后停止?