teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

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

2021/07/30 06:59

投稿

taku-
taku-

スコア5

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

2

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

2021/07/30 06:59

投稿

taku-
taku-

スコア5

title CHANGED
File without changes
body CHANGED
@@ -14,11 +14,13 @@
14
14
  ### 該当のソースコード
15
15
 
16
16
  ```PHP
17
- $KANA_SJIS = "画面で入力された全角カナ";
17
+ $KANA = "画面で入力された全角カナ";
18
+ if ($KANA == "") {
19
+ $MSG = "必須です";
18
- preg_match('/^[ァ-ヴー  ]+$/', $KANA_SJIS);
20
+ } elseif (!preg_match('/^[ァ-ヴー  ]+$/u', mb_convert_encoding($KANA, "UTF-8", "SJIS"))) {
21
+ $MSG = "カナを入力して下さい";
22
+ }
19
23
 
20
- KANA_UTF8 = mb_convert_encoding($KANA_SJIS, "UTF-8", "SJIS");
21
- preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8);
22
24
  ```
23
25
 
24
26
  ### 試したこと

1

"試したこと"へ追記

2021/07/30 06:34

投稿

taku-
taku-

スコア5

title CHANGED
File without changes
body CHANGED
@@ -23,27 +23,29 @@
23
23
 
24
24
  ### 試したこと
25
25
 
26
+ 想定した結果はいずれもint(1)でしたが、以下となった。
27
+
26
28
  $KANA_SJIS = "コウ ゾビ";
27
29
  echo(mb_detect_encoding($$KANA_SJIS)); ⇒SJIS
28
30
 
29
- 確認1: var_dump(preg_match('/^[ァ-ヴー  ]+$/', $KANA_SJIS)); ⇒int(1)
31
+ 確認1: var_dump(preg_match('/^[ァ-ヴー  ]+$/', $KANA_SJIS)); ⇒結果:int(1)
30
- 確認2: var_dump(preg_match('/^[ァ-ヴー  ]+$/', "ワ")); ⇒int(0)
32
+ 確認2: var_dump(preg_match('/^[ァ-ヴー  ]+$/', "ワ")); ⇒結果:int(0)
31
33
 
32
34
 
33
35
  $KANA_UTF8 = mb_convert_encoding($KANA_SJIS, "UTF-8", "SJIS");
34
36
 
35
37
 
36
38
  echo(mb_detect_encoding($KANA_UTF8)); ⇒UTF-8
37
- 確認3: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒bool(false)
39
+ 確認3: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒結果:bool(false)
38
40
 
39
41
 
40
42
  mb_regex_encoding("UTF-8");
41
- 確認4: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒bool(false)
43
+ 確認4: var_dump(preg_match('/^[ァ-ヴー  ]+$/u', $KANA_UTF8)); ⇒結果:bool(false)
42
44
 
43
45
 
44
46
  確認5:
45
- var_dump(mb_ereg('^[ァ-ヴー  ]+$', $KANA_SJIS)); ⇒int(1)
47
+ var_dump(mb_ereg('^[ァ-ヴー  ]+$', $KANA_SJIS)); ⇒結果:int(1)
46
- var_dump(mb_ereg('^[ァ-ヴー  ]+$', "ワ")); ⇒int(1)
48
+ var_dump(mb_ereg('^[ァ-ヴー  ]+$', "ワ")); ⇒結果:int(1)
47
49
 
48
50
  ### 補足情報(FW/ツールのバージョンなど)
49
51