回答編集履歴

6

修正

2016/08/24 09:00

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -8,15 +8,15 @@
8
8
 
9
9
  $phone = $_SERVER['HTTP_USER_AGENT'];
10
10
 
11
- $flg = strpos('iPhone',$phone);
11
+ $pos = strpos('iPhone',$phone);
12
12
 
13
13
  ```
14
14
 
15
- いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$flgには見つかった最初の文字(5文字目なら5という風に),falseといった結果が入ります。この判定を元に
15
+ いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$posには見つかった最初の文字の場所(5文字目なら5という風に),そして見つからなかった場合はfalseといった結果が入ります。この判定を元に
16
16
 
17
17
  ```php
18
18
 
19
- if($flg !== false){
19
+ if($pos !== false){
20
20
 
21
21
   $device = "iPhone";
22
22
 

5

strposの説明修正

2016/08/24 09:00

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```
14
14
 
15
- いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$flgにはtrue,falseといった判定結果が入ります。この判定を元に
15
+ いきなり$phoneにiPhoneやAndroidといった値が代入されるわけではありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字を含んだ長ったらしい文字列)が代入されます。そこで、必要なデバイス情報を判別するために、その文字が含んでいるかどうかをstrpos関数で判定します。そして$flgには見つかった最初の文字数(5文字目なら5という風に),falseといった結果が入ります。この判定を元に
16
16
 
17
17
  ```php
18
18
 

4

説明の修正

2016/08/24 08:58

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```php
18
18
 
19
- if($flg !== "iPhone"){
19
+ if($flg !== false){
20
20
 
21
21
   $device = "iPhone";
22
22
 

3

文章の大幅な修正

2016/08/24 08:54

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- よくあるphpを使ったデバイス判別は、以下のようなプログラムですが
5
+ phpを使ったデバイス判別は、以下のようなプログラムが有名ですが、けっこう勘違いを起こしやすい部分があります。
6
6
 
7
7
  ```php
8
8
 
@@ -12,4 +12,18 @@
12
12
 
13
13
  ```
14
14
 
15
- strpos関数ているということないですよね?こが抜けると、長ったしいエージェント情報をてきています。strpos関数はの中で、必要なデバイスの名前るかどうかを判ているのです。そして$flgに入る値TRUE OR FALSEといった判定結果となります。
15
+ いきなり$phoneにiPhoneやAndroidといった値代入されるわありません。それらのデバイス情報を含んだユーザーエージェント情報(つまり、iPhoneならiPhoneという文字含んだ長たらしい文字列)が代入されます。そで、必要なデバイス情報を判別するために、そ文字含んでいるかどうかをstrpos関数です。そして$flgにはtrue,falseといった判定結果が入ります。この判定を元に
16
+
17
+ ```php
18
+
19
+ if($flg !== "iPhone"){
20
+
21
+  $device = "iPhone";
22
+
23
+ }
24
+
25
+ ```
26
+
27
+ このように値を代入して、初めてiPhoneという値が入るわけですが、何か引っかかる部分があるなら、参考にしてみてください。
28
+
29
+

2

説明の補助

2016/08/24 06:28

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -12,4 +12,4 @@
12
12
 
13
13
  ```
14
14
 
15
- strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます。strpos関数はその中で、必要なデバイスの名前があるかどうかを判別しているのです。
15
+ strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます。strpos関数はその中で、必要なデバイスの名前があるかどうかを判別しているのです。そして$flgに入る値はTRUE OR FALSEといった判定結果となります。

1

説明の補助

2016/08/24 06:11

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -12,4 +12,4 @@
12
12
 
13
13
  ```
14
14
 
15
- strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます
15
+ strpos関数が抜けているということはないですよね?これが抜けると、長ったらしいエージェント情報を拾ってきてしまいます。strpos関数はその中で、必要なデバイスの名前があるかどうかを判別しているのです。