0

次の検証があります。

    if (empty($errors) === true) { 
        if (strlen($_POST['Description']) > 250) { //strlen counts the number of bytes
            $errors[] = 'Your description must be less than 250 characters long';
        }
    }

ただし、ユーザーが 30 文字を超える説明を入力すると、このエラーが常に表示されます。strlen が文字列の文字数ではなくバイト数を返すことを読みました。文字の長さを取得するために mb_strlen を試しましたが、これも機能しません。明らかにばかげたことをしているように感じます。できれば助けてください。

4

1 に答える 1

0

正直なところ、文字に 8 バイトを使用するエンコーディングについては知りません。

「$_POST['Description']」には、必要なデータだけが含まれているとは限りません。

する

 var_dump($_POST['Description'])

そして、それが何を示しているかを見てください。

余談:

if (strlen(trim($_POST['Description'])) > 250)

検証が失敗する原因となる空白を防ぎます。

また、送信される文字のエンコーディングは内部エンコーディングと同じではない可能性があるため、エンコーディングを mb_strlen に指定する必要があることに注意してください。

于 2013-04-24T14:13:08.420 に答える