StringLength
Diese Prüfung erlaubt es zu prüfen ob ein angegebener String eine definierte Länge besitzt.
Zend_Validate_StringLength unterstützt nur die Prüfung von Strings
Es ist zu beachten das Zend_Validate_StringLength nur die Prüfung
von Strings unterstützt. Integer, Floats, Datumswerte oder Objekte können mit dieser
Prüfung nicht überprüft werden.
Unterstützte Optionen für Zend_Validate_StringLength
Die folgenden Optionen werden von Zend_Validate_StringLength
unterstützt:
encoding: Setzt die Kodierung von
ICONV welche für den String verwendet wird.
min: Setzt die erlaubte Mindestlänge
für einen String.
max: Setzt die erlaubte Maximallänge
für einen String.
Standardverhalten für Zend_Validate_StringLength
Standardmäßig prüft diese Prüfung ob ein Wert zwischen min und
max ist. Aber für min ist der Standardwert
0 und für max ist er
NULL, was unlimitiert bedeutet.
Deshalb prüft diese Prüfung standardmäßig, ohne das eine Option angegeben wurde, nur
ob die Eingabe ein String ist.
Die maximal erlaubte Länge eines String begrenzen
Um die maximal erlaubte Länge eines Strings zu begrenzen muss man die Eigenschaft
max setzen. Sie akzeptiert einen Integerwert als Eingabe.
6));
$validator->isValid("Test"); // Gibt true zurück
$validator->isValid("Testing"); // Gibt false zurück
]]>
Man kann die maximal erlaubte Länge auch im Nachhinein setzen indem die
setMax() Methode verwendet wird. Und
getMax() um die aktuelle maximale Grenze zu erhalten.
setMax(6);
$validator->isValid("Test"); // Gibt true zurück
$validator->isValid("Testing"); // Gibt false zurück
]]>
Die mindestens benötigte Länge eines Strings begrenzen
Um die mindestens benötigte Länge eines Strings zu begrenzen muss man die Eigenschaft
min setzen. Sie akzeptiert einen Integerwert als Eingabe.
5));
$validator->isValid("Test"); // Gibt false zurück
$validator->isValid("Testing"); // Gibt true zurück
]]>
Man kann die mindestens benötigte Länge auch im Nachhinein setzen indem die
setMin() Methode verwendet wird. Und
getMin() um die aktuelle Mindestgrenze zu erhalten.
setMin(5);
$validator->isValid("Test"); // Gibt false zurück
$validator->isValid("Testing"); // Gibt true zurück
]]>
Einen String auf beiden Seiten begrenzen
Manchmal ist es notwendig einen String zu erhalten der eine maximal definierte Länge,
aber auch eine Mindestlänge hat. Wenn man, zum Beispiel, eine Textbox hat in welcher der
Benutzer seinen Namen angeben kann, könnte man den Namen auf maximal 30 Zeichen
begrenzen. Aber man will auch sicher gehen das er seinen Namen angegeben hat. Deshalb
setzt man die zumindest benötigte Länge auf 3 Zeichen. Siehe das folgende Beispiel:
3, 'max' => 30));
$validator->isValid("."); // Gibt false zurück
$validator->isValid("Test"); // Gibt true zurück
$validator->isValid("Testing"); // Gibt true zurück
]]>
Eine kleinere Maximalgrenze als die Mindestgrenze setzen
Wenn man versucht eine kleinere Maximalgrenze zu setzen als der aktuelle
Mindestwert, oder eine größere Mindestgrenze als den aktuellen Maximalwert, dann
wird eine Exception geworfen.
Kodierung von Werten
Strings verwenden immer eine Kodierung. Selbst wenn man keine explizite Kodierung
verwendet, dann verwendet PHP eine. Wenn die eigene Anwendung eine
andere Kodierung verwendet als PHP selbst, dann sollte man eine
Kodierung setzen.
Man kann eine eigene Kodierung bei der Instanzierung mit der
encoding Option setzen, oder indem die
setEncoding() Methode verwendet wird. Wir nehmen an das die
eigene Installation ISO verwendet und die Anwendung auf
ISO gesetzt ist. In diesem Fall sieht man das folgende
Verhalten.
6)
);
$validator->isValid("Ärger"); // Gibt false zurück
$validator->setEncoding("UTF-8");
$validator->isValid("Ärger"); // Gibt true zurück
$validator2 = new Zend_Validate_StringLength(
array('min' => 6, 'encoding' => 'UTF-8')
);
$validator2->isValid("Ärger"); // Gibt true zurück
]]>
Wenn die eigene Installation und die Anwendung also unterschiedliche Kodierungen
verwenden, dann sollte man immer selbst eine Kodierung setzen.