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

回答編集履歴

1

追記

2020/08/19 00:43

投稿

phiar_poet
phiar_poet

スコア230

answer CHANGED
@@ -5,9 +5,58 @@
5
5
 
6
6
  ```php
7
7
  function checkStrLengthLimit($str, $limit){
8
- if( mb_strlen(mb_ereg_replace("゙|゚","",$str) > $limit ){
8
+ if( mb_strlen(mb_ereg_replace("゙|゚","",$str)) > $limit ){
9
9
  return "文字数超過";
10
10
  }
11
11
  return "問題無し";
12
12
  }
13
- ```
13
+ ```
14
+
15
+ ### 20200819追記
16
+ 以下のように、置換した結果を一度出力してみましたが問題ないように思います。
17
+
18
+ ```php
19
+ <?php
20
+
21
+ $str = "アババパパパバ";
22
+
23
+ echo checkStrLengthLimit($str,7);
24
+ echo "\n";
25
+
26
+ function checkStrLengthLimit($str, $limit){
27
+ $str_rpl = mb_ereg_replace("゙|゚","",$str);
28
+
29
+ echo "\n" . $str_rpl . "\n";
30
+
31
+ if( mb_strlen($str_rpl, "UTF-8") > $limit ){
32
+ return "文字数超過\n";
33
+ }
34
+ return "問題無し\n";
35
+ }
36
+
37
+ ?>
38
+
39
+ ```
40
+ ![イメージ説明](84b7538ae2e0e521a2d173afa61a545e.png)
41
+
42
+ このファイルそのものはUTF-8で作成されている為、
43
+
44
+ $str = "アババパパパバ":
45
+
46
+ で $str に代入されている「アババパパパバ」の文字コードはUTF-8です。
47
+ この状態で実行すると質問者さんの意図通りに動作しているように見えます。
48
+
49
+ 同じコードを書いても正常に動作しない場合、
50
+ $str に代入されている文字の文字コードがUTF-8ではないという可能性があると思います。
51
+
52
+ PHPの内部文字コードがUTF-8ではないのか、
53
+ そのPHPファイルに飛んでくるデータがUTF-8ではないのか…。
54
+
55
+ ひとまず、$strを
56
+
57
+ ```php
58
+ $str = mb_convert_encoding($str, "UTF-8"); //内部文字エンコーディングからUTF-8に変更
59
+ ```
60
+
61
+ このように変換してみてどうかチェックしてみてください。
62
+ コード自体は正常に動作するはずです…。