質問

Zend Frameworkでは、 Zend_Validate_StringLength 異なる文字セット間の変換に使用できるエンコードプロパティがあります(使用します iconv_set_encoding 文字列上)。

なぜこの部分があるのか StringLength バリデータークラス? UTF-8を実施するために、文字列長フィールドチェックでこれを使用する必要がありますか?

役に立ちましたか?

解決

PHPの文字列長は、文字列を保存するために取られたバイト数です。一部のエンコーディングは、複数のバイト(2つ)を使用して単一の文字を保存します。

したがって、複数のバイトで一部の文字を保存するエンコード(Unicode UTF-8など)を使用する場合、このエンコードを使用して文字列の長さを適切に決定する必要があります。デフォルトのエンコード設定を使用すると、不正確な結果が得られる場合があります。

ただし、すべてのZendコンポーネントのデフォルトはUTF-8であると考えています。これは、Webアプリケーションの事実上の標準です。残念、これはPHP(まだ)のデフォルトのものではありません。

他のヒント

実際に使用します iconv_set_encoding 現在のサーバーが指定されているかどうかをテストするためにのみ $encoding. 。実際の比較は、と行われます iconv_strlen().

私があなたの2番目の質問を得ることができるかどうかはわかりません。文字列の長さを検証する必要がある場合は、このバリデーターを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top