8

PHPでUTF-8文字列の長さを数えるときは、を使用しますmb_strlen()

例えば:

if (mb_strlen($name, 'UTF-8') < 3) {
    $error .= 'Name is required. Minimum of 3 characters required in name.';
}

テキストフィールドは任意の言語(多言語)を受け入れることができるので、PHPが複数言語のUTF-8文字を正しくカウントすることを確認したいと思います。

これで十分ですか、それとも他の方法を使用する必要がありますか?PHPが何らかの理由で間違っているのではないか、あるいは単に懐疑的であるのではないかと心配していますが、PHPが間違っているので、重要な検証をバイパスしてほしくないのです。

4

2 に答える 2

21

正しい

if (mb_strlen($name, 'UTF-8') < 3) is sufficient enough

ヘッダーが正しいことを確認してください

HTTP-header (Content-Type: text/html; charset=UTF-8)

何らかの理由で代替案を確認することもできます

strlen(utf8_decode($string))

PHPのUTF-8からコードポイント配列へのコンバーター

于 2010-09-04T04:27:52.700 に答える
1

JapanProの答えに加えて:
あなたのHTMLは以下を持つことができます:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

暗黙のヘッダー宣言の代わりに:

HTTP-header (Content-Type: text/html; charset=UTF-8)
于 2012-07-28T12:39:47.227 に答える