Domanda

In Zend Framework, Zend_Validate_StringLength ha una proprietà di codifica che può essere utilizzato per la conversione tra differenti insiemi di caratteri (usa iconv_set_encoding sulla corda).

Perché questo è parte della classe StringLength validatore? Dovrei usare questo con la mia stringa di verifiche sul campo lunghezza di far rispettare UTF-8?

È stato utile?

Soluzione

La lunghezza delle stringhe in PHP sono il numero di byte adottate per salvare la stringa. Alcune codifiche utilizzano più byte (ad esempio due) per memorizzare singolo carattere.

Pertanto, se si utilizza la codifica memorizzare alcuni dei caratteri a più byte (ad esempio Unicode UTF-8), è necessario utilizzare questa codifica per determinare correttamente lunghezza della stringa. Se si utilizzano le impostazioni di codifica di default, è possibile ottenere risultati non accurati.

Tuttavia, credo che il valore di default per tutti i componenti di Zend è UTF-8, che è lo standard de facto nelle applicazioni web. Peccato, questo non è quello di default per PHP (ancora).

Altri suggerimenti

In realtà utilizza iconv_set_encoding solo per test se supportati dal server attuali specificati $encoding. Il confronto effettivo è fatto con iconv_strlen().

Non sono sicuro che posso ottenere la tua seconda domanda. Se avete bisogno di lunghezza convalidare stringhe - è necessario utilizzare questo strumento di convalida

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top