これはいくつかの単純なばかげたことかもしれませんが、私自身はそれを理解できません。PHPでstrpos()を使用して一致する最初の文字列で停止
私はモバイル検出スクリプトを作成しようとしており、大きな成功を収めています。しかし、より深い点検の結果、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ユーザーエージェント。
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のバージョンとサファリのバージョンをほぼ同じユーザーエージェントを見たことです異なっていた。
私の問題は、そのユーザーエージェントでは、文字列の位置がipad
とmobile
の一致を返したことです。最初の文字列が一致した後にどのように停止するのですか?
を? – mario
[WURFL](http://wurfl.sourceforge.net/)を使用していない特別な理由はありますか? –
yaですが、John Flatnessが指摘しているように、私のipadの前にモバイルという用語があるので、ループは最初のマッチを見つけた後に壊れます。 – Eli