これは単純なばかげたことかもしれませんが、私はそれを自分で理解することはできません。
私はモバイル検出スクリプトを作成しようとしていますが、大きな成功を収めています。しかし、詳しく調べてみると、私のIF
句の1つが戻ってきているように見えます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では、ほぼ同じユーザーエージェントが表示され、OSバージョンとSafariバージョンだけが異なっていました。
今私の問題は、そのユーザーエージェントで、文字列の位置がipad
ANDの一致を返すmobile
ことですが、最初の文字列が一致した後に停止させるにはどうすればよいですか?