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.