Zend_validate_stringLength codieren?
-
25-10-2019 - |
Frage
Im Zend Framework, Zend_Validate_StringLength
hat eine Codierungseigenschaft, die verwendet werden kann, um zwischen verschiedenen Zeichensätzen umzuwandeln (es wird verwendet iconv_set_encoding
auf der Zeichenfolge).
Warum ist dieser Teil der StringLength
Validator -Klasse? Sollte ich dies mit meinen Feldprüfungen für die Stringlänge verwenden, um UTF-8 durchzusetzen?
Lösung
Stringlängen in PHP sind die Anzahl der Bytes, die zum Speichern der Zeichenfolge aufgenommen wurden. Einige Codierungen verwenden mehrere Bytes (z. B. zwei), um einzelne Zeichen zu speichern.
Wenn Sie also das Speichern einiger Zeichen in mehreren Bytes verwenden (z. B. Unicode UTF-8), müssen Sie diese Codierung verwenden, um die Stringlänge ordnungsgemäß zu bestimmen. Wenn Sie die Standard -Codierungseinstellungen verwenden, erhalten Sie möglicherweise ungenaue Ergebnisse.
Ich glaube jedoch, dass die Standardeinstellung für alle Zend-Komponenten UTF-8 ist, was der De-facto-Standard in den Webanwendungen ist. Schade, dies ist nicht die Standardeinstellung für PHP (noch).
Andere Tipps
Eigentlich verwendet es iconv_set_encoding
Nur um zu testen, ob der aktuelle Server angegeben wird $encoding
. Der tatsächliche Vergleich wird mit durchgeführt iconv_strlen()
.
Ich bin mir nicht sicher, ob ich Ihre zweite Frage bekommen kann. Wenn Sie die Zeichenfolgenlänge validieren müssen, müssen Sie diesen Validator verwenden.