StringLength Ce validateur vérifie la longueur d'une chaine de caractères. Zend_Validate_StringLength ne supporte que les chaines Zend_Validate_StringLength ne fonctionnera pas avec les entiers, flottants, les dates ou encore les objets. Options gérées par Zend_Validate_StringLength Les options suivantes sont reconnues par Zend_Validate_StringLength: encoding: Définit l'encodage ICONV à utiliser avec la chaine. min: Définit le nombre de caractères minimum requis. max: Définit le nombre de caractères maximum requis. Comportement par défaut de Zend_Validate_StringLength Par défaut, ce validateur vérifie qu'une valeur de chaine est bien entre min et max caractères. Pour min, la valeur par défaut est 0 et pour max c'est NULL ce qui signifie illimité. Ainsi par défaut, sans aucune option, ce validateur vérifie que la donnée traitée est bien une chaine. Limiter sur la borne supérieure La borne supérieure se règle au moyen de l'option max. Ce doit être un entier. 6)); $validator->isValid("Test"); // retourne true $validator->isValid("Testing"); // retourne false ]]> Il est possible de préciser cette option plus tard, au moyen de la méthode setMax(). getMax() existe aussi. setMax(6); $validator->isValid("Test"); // retourne true $validator->isValid("Testing"); // retourne false ]]> Limiter sur la borne inférieure La borne inférieure se règle au moyen de l'option min. Ce doit être un entier. 5)); $validator->isValid("Test"); // retourne false $validator->isValid("Testing"); // retourne true ]]> Il est possible de préciser cette option plus tard, au moyen de la méthode setMin(). getMin() existe aussi. setMin(5); $validator->isValid("Test"); // retourne false $validator->isValid("Testing"); // retourne true ]]> Limiter via les deux bornes Quelques fois, il est nécessaire de s'assurer que la chaine comprenne bien un nombre de caractères entre deux bornes min et max. Par exemple depuis un champ de formulaire représentant un nom, vous voudriez que l'utilisateur ne puisse saisir plus de 30 caractères mais au moins 3. Voyez l'exemple qui suit: 3, 'max' => 30)); $validator->isValid("."); // retourne false $validator->isValid("Test"); // retourne true $validator->isValid("Testing"); // retourne true ]]> Comportement illogique, borne inférieure supérieure à la borne supérieure Si vous tentez de préciser un min supérieur au max, ou inversement, une exception sera levée. Encodage des valeurs Les chaines se représentent toujours en considérant un encodage. Même si vous ne le précisez pas explicitement, PHP en utilise un. Si votre application utilise un encodage différent de celui de PHP, vous devrez alors le préciser. Vous pouvez passer votre propre encodage à l'initialisation grâce à l'option encoding, ou en utilisant la méthode setEncoding() . Nous supposons que votre installation utilise ISO ainsi que votre application. Dans ce cas, vous verrez le comportement suivant: 6) ); $validator->isValid("Ärger"); // retourne false $validator->setEncoding("UTF-8"); $validator->isValid("Ärger"); // retourne true $validator2 = new Zend_Validate_StringLength( array('min' => 6, 'encoding' => 'UTF-8') ); $validator2->isValid("Ärger"); // retourne true ]]> Si votre installation et votre application utilisent des encodages différents, vous deviez toujours préciser l'encodage vous-même.