質問編集履歴

3

前提・実現したいことを更新

2021/07/30 06:59

投稿

taku-
taku-

スコア5

test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,18 @@
5
5
  PHP(Version 5.2.8)にて正規表現のpreg_matchを使い、全角カナの入力チェックを行いたい。
6
6
 
7
7
  画面に全角カナを入力する欄があり、チェックを行いたい。
8
+
9
+
10
+
11
+ 回答からの結論:
12
+
13
+ ソースコードがSJISの場合、正規表現のパターンおよび、チェック対象の文字列の
14
+
15
+ 両方をmb_convert_encodingで"UTF-8"へ変換してpreg_matchを行う。
16
+
17
+ $KANA_UTF8 = mb_convert_encoding($KANA_SJIS, "UTF-8", "SJIS");
18
+
19
+ preg_match(mb_convert_encoding('/^[ァ-ヴー  ]+$/u', "UTF-8", "SJIS"), $KANA_UTF8);
8
20
 
9
21
 
10
22
 

2

該当のソースコードを更新

2021/07/30 06:59

投稿

taku-
taku-

スコア5

test CHANGED
File without changes
test CHANGED
@@ -30,15 +30,19 @@
30
30
 
31
31
  ```PHP
32
32
 
33
- $KANA_SJIS = "画面で入力された全角カナ";
33
+ $KANA = "画面で入力された全角カナ";
34
34
 
35
+ if ($KANA == "") {
36
+
37
+ $MSG = "必須です";
38
+
35
- preg_match('/^[ァ-ヴー  ]+$/', $KANA_SJIS);
39
+ } elseif (!preg_match('/^[ァ-ヴー  ]+$/u', mb_convert_encoding($KANA, "UTF-8", "SJIS"))) {
40
+
41
+ $MSG = "カナを入力して下さい";
42
+
43
+ }
36
44
 
37
45
 
38
-
39
- KANA_UTF8 = mb_convert_encoding($KANA_SJIS, "UTF-8", "SJIS");
40
-
41
- preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8);
42
46
 
43
47
  ```
44
48
 

1

"試したこと"へ追記

2021/07/30 06:34

投稿

taku-
taku-

スコア5

test CHANGED
File without changes
test CHANGED
@@ -48,15 +48,19 @@
48
48
 
49
49
 
50
50
 
51
+ 想定した結果はいずれもint(1)でしたが、以下となった。
52
+
53
+
54
+
51
55
  $KANA_SJIS = "コウ ゾビ";
52
56
 
53
57
  echo(mb_detect_encoding($$KANA_SJIS)); ⇒SJIS
54
58
 
55
59
 
56
60
 
57
- 確認1: var_dump(preg_match('/^[ァ-ヴー  ]+$/', $KANA_SJIS)); ⇒int(1)
61
+ 確認1: var_dump(preg_match('/^[ァ-ヴー  ]+$/', $KANA_SJIS)); ⇒結果:int(1)
58
62
 
59
- 確認2: var_dump(preg_match('/^[ァ-ヴー  ]+$/', "ワ")); ⇒int(0)
63
+ 確認2: var_dump(preg_match('/^[ァ-ヴー  ]+$/', "ワ")); ⇒結果:int(0)
60
64
 
61
65
 
62
66
 
@@ -70,7 +74,7 @@
70
74
 
71
75
  echo(mb_detect_encoding($KANA_UTF8)); ⇒UTF-8
72
76
 
73
- 確認3: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒bool(false)
77
+ 確認3: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒結果:bool(false)
74
78
 
75
79
 
76
80
 
@@ -78,7 +82,7 @@
78
82
 
79
83
  mb_regex_encoding("UTF-8");
80
84
 
81
- 確認4: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒bool(false)
85
+ 確認4: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒結果:bool(false)
82
86
 
83
87
 
84
88
 
@@ -86,9 +90,9 @@
86
90
 
87
91
  確認5:
88
92
 
89
- var_dump(mb_ereg('^[ァ-ヴー  ]+$', $KANA_SJIS)); ⇒int(1)
93
+ var_dump(mb_ereg('^[ァ-ヴー  ]+$', $KANA_SJIS)); ⇒結果:int(1)
90
94
 
91
- var_dump(mb_ereg('^[ァ-ヴー  ]+$', "ワ")); ⇒int(1)
95
+ var_dump(mb_ereg('^[ァ-ヴー  ]+$', "ワ")); ⇒結果:int(1)
92
96
 
93
97
 
94
98