回答編集履歴
6
修正
answer
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
phpを使ったデバイス判別は、以下のようなプログラムが有名ですが、けっこう勘違いを起こしやすい部分があります。
|
4
4
|
```php
|
5
5
|
$phone = $_SERVER['HTTP_USER_AGENT'];
|
6
|
-
$
|
6
|
+
$pos = strpos('iPhone',$phone);
|
7
7
|
```
|
8
|
-
いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$
|
8
|
+
いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$posには見つかった最初の文字の場所(5文字目なら5という風に),そして見つからなかった場合はfalseといった結果が入ります。この判定を元に
|
9
9
|
```php
|
10
|
-
if($
|
10
|
+
if($pos !== false){
|
11
11
|
$device = "iPhone";
|
12
12
|
}
|
13
13
|
```
|
5
strposの説明修正
answer
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
$phone = $_SERVER['HTTP_USER_AGENT'];
|
6
6
|
$flg = strpos('iPhone',$phone);
|
7
7
|
```
|
8
|
-
いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$flgには
|
8
|
+
いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$flgには見つかった最初の文字数(5文字目なら5という風に),falseといった結果が入ります。この判定を元に
|
9
9
|
```php
|
10
10
|
if($flg !== false){
|
11
11
|
$device = "iPhone";
|
4
説明の修正
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
```
|
8
8
|
いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$flgにはtrue,falseといった判定結果が入ります。この判定を元に
|
9
9
|
```php
|
10
|
-
if($flg !==
|
10
|
+
if($flg !== false){
|
11
11
|
$device = "iPhone";
|
12
12
|
}
|
13
13
|
```
|
3
文章の大幅な修正
answer
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
プログラム的な問題の可能性が高いと思います。$phonesという値はどこからどうやって取得していますか?
|
2
2
|
|
3
|
-
|
3
|
+
phpを使ったデバイス判別は、以下のようなプログラムが有名ですが、けっこう勘違いを起こしやすい部分があります。
|
4
4
|
```php
|
5
5
|
$phone = $_SERVER['HTTP_USER_AGENT'];
|
6
6
|
$flg = strpos('iPhone',$phone);
|
7
7
|
```
|
8
|
-
|
8
|
+
いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$flgにはtrue,falseといった判定結果が入ります。この判定を元に
|
9
|
+
```php
|
10
|
+
if($flg !== "iPhone"){
|
11
|
+
$device = "iPhone";
|
12
|
+
}
|
13
|
+
```
|
14
|
+
このように値を代入して、初めてiPhoneという値が入るわけですが、何か引っかかる部分があるなら、参考にしてみてください。
|
2
説明の補助
answer
CHANGED
@@ -5,4 +5,4 @@
|
|
5
5
|
$phone = $_SERVER['HTTP_USER_AGENT'];
|
6
6
|
$flg = strpos('iPhone',$phone);
|
7
7
|
```
|
8
|
-
strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます。strpos関数はその中で、必要なデバイスの名前があるかどうかを判別しているのです。
|
8
|
+
strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます。strpos関数はその中で、必要なデバイスの名前があるかどうかを判別しているのです。そして$flgに入る値はTRUE OR FALSEといった判定結果となります。
|
1
説明の補助
answer
CHANGED
@@ -5,4 +5,4 @@
|
|
5
5
|
$phone = $_SERVER['HTTP_USER_AGENT'];
|
6
6
|
$flg = strpos('iPhone',$phone);
|
7
7
|
```
|
8
|
-
strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます
|
8
|
+
strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます。strpos関数はその中で、必要なデバイスの名前があるかどうかを判別しているのです。
|