Aiuto con esteso ASCII / codifica in PHP!
-
03-10-2019 - |
Domanda
gente buona serata.
Questo è il mio codice:
static private function removeAccentedLetters($input){
for ($i = 0; $i < strlen($input); $i++) {
$input[$i]=self::simplify($input[$i]);
}
return $input;
}
static private function simplify($in){
$ord=ord($in);
switch ($ord) {
case 193: //Á...
return 'A';
case 98: //b
return 'a';
default:
return $in;
}
}
Ok. Questo è il bit che non funziona
case 193: //Á...
return 'A';
E questo è il bit che fa:
case 98: //b
return 'a';
Questi sono solo a scopo di test.
Qualcuno potrebbe dirmi che cosa sta succedendo? Ho avuto lo stesso tipo di errore prima, ma ora non sto usando qualsiasi ASCII esteso nel codice stesso, che è stato la causa dell'errore prima.
Sto pensando che deve avere qualcosa a che fare con la codifica dei caratteri, ma non ne sono sicuro. A proposito, sto codifica in Eclipse e, in base ad esso, la codifica dei caratteri che sto utilizzando è Cp1252.
Oh, e sì, si suppone che il codice per eliminare eventuali lettere accentate come ad esempio   e sostituirli con i loro vogals di base, vale a dire A-> a
Grazie in anticipo
Soluzione
E 'possibile che se si dispone di caratteri multi-byte, e si sono loop attraverso ogni carattere utilizzando strlen()
per verificare se si è in loop fino in fondo? strlen()
assume 1 byte == 1 carattere.
Mi piacerebbe guardare in esistente librerie di traslitterazione per PHP.
Altri suggerimenti