回答編集履歴

1

追記

2020/08/19 00:43

投稿

phiar_poet
phiar_poet

スコア230

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  function checkStrLengthLimit($str, $limit){
14
14
 
15
- if( mb_strlen(mb_ereg_replace("゙|゚","",$str) > $limit ){
15
+ if( mb_strlen(mb_ereg_replace("゙|゚","",$str)) > $limit ){
16
16
 
17
17
  return "文字数超過";
18
18
 
@@ -23,3 +23,101 @@
23
23
  }
24
24
 
25
25
  ```
26
+
27
+
28
+
29
+ ### 20200819追記
30
+
31
+ 以下のように、置換した結果を一度出力してみましたが問題ないように思います。
32
+
33
+
34
+
35
+ ```php
36
+
37
+ <?php
38
+
39
+
40
+
41
+ $str = "アババパパパバ";
42
+
43
+
44
+
45
+ echo checkStrLengthLimit($str,7);
46
+
47
+ echo "\n";
48
+
49
+
50
+
51
+ function checkStrLengthLimit($str, $limit){
52
+
53
+ $str_rpl = mb_ereg_replace("゙|゚","",$str);
54
+
55
+
56
+
57
+ echo "\n" . $str_rpl . "\n";
58
+
59
+
60
+
61
+ if( mb_strlen($str_rpl, "UTF-8") > $limit ){
62
+
63
+ return "文字数超過\n";
64
+
65
+ }
66
+
67
+ return "問題無し\n";
68
+
69
+ }
70
+
71
+
72
+
73
+ ?>
74
+
75
+
76
+
77
+ ```
78
+
79
+ ![イメージ説明](84b7538ae2e0e521a2d173afa61a545e.png)
80
+
81
+
82
+
83
+ このファイルそのものはUTF-8で作成されている為、
84
+
85
+
86
+
87
+ $str = "アババパパパバ":
88
+
89
+
90
+
91
+ で $str に代入されている「アババパパパバ」の文字コードはUTF-8です。
92
+
93
+ この状態で実行すると質問者さんの意図通りに動作しているように見えます。
94
+
95
+
96
+
97
+ 同じコードを書いても正常に動作しない場合、
98
+
99
+ $str に代入されている文字の文字コードがUTF-8ではないという可能性があると思います。
100
+
101
+
102
+
103
+ PHPの内部文字コードがUTF-8ではないのか、
104
+
105
+ そのPHPファイルに飛んでくるデータがUTF-8ではないのか…。
106
+
107
+
108
+
109
+ ひとまず、$strを
110
+
111
+
112
+
113
+ ```php
114
+
115
+ $str = mb_convert_encoding($str, "UTF-8"); //内部文字エンコーディングからUTF-8に変更
116
+
117
+ ```
118
+
119
+
120
+
121
+ このように変換してみてどうかチェックしてみてください。
122
+
123
+ コード自体は正常に動作するはずです…。