質問: 上限数($limit):10 文字列($str):ガガガガガ 結果:問題無し 文字列($str):ガガガガガガ 結果:文字数超過 文字列($str):カカカカカカカカカガ 結果:問題無し 文字列($str):カカカカカカカカガガ 結果:文字数超過
回答: > > mb_strlen ( string $str , string $encoding = mb_internal_encoding() ] ) > > > mb_strlen についてはこんな感じなのですが、CHARSETでエラーを吐きませんか? 省略可能なので省略するとこちらの環境では動作しているように思います。 ``` function checkStrLengthLimit($str, $limit){ if( mb_strlen(mb_ereg_replace("゙|゚","",$str)) > $limit ){ return "文字数超過"; } return "問題無し"; } ``` ### 20200819追記 以下のように、置換した結果を一度出力してみましたが問題ないように思います。 ``` $limit ){ return "文字数超過\n"; } return "問題無し\n"; } ?> ``` ![イメージ説明 このファイルそのものはUTF-8で作成されている為、 $str = "アババパパパバ": で $str に代入されている「アババパパパバ」の文字コードはUTF-8です。 この状態で実行すると質問者さんの意図通りに動作しているように見えます。 同じコードを書いても正常に動作しない場合、 $str に代入されている文字の文字コードがUTF-8ではないという可能性があると思います。 PHPの内部文字コードがUTF-8ではないのか、 そのPHPファイルに飛んでくるデータがUTF-8ではないのか...。 ひとまず、$strを ``` $str = mb_convert_encoding($str, "UTF-8"); //内部文字エンコーディングからUTF-8に変更 ``` このように変換してみてどうかチェックしてみてください。 コード自体は正常に動作するはずです...。