Ayuda con ASCII extendido / codificación en PHP!
-
03-10-2019 - |
Pregunta
gente buena tarde.
Este es mi código:
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. Esta es la parte que no funciona
case 193: //Á...
return 'A';
Y esta es la parte que hace:
case 98: //b
return 'a';
Estos son sólo para propósitos de prueba.
Podría alguien decirme qué está pasando? Yo tenía el mismo tipo de error antes, pero ahora no estoy usando cualquier ASCII extendido en el propio código, que fue la causa del error antes.
Estoy pensando que debe tener algo que ver con la codificación de caracteres, pero no estoy seguro. Por cierto, estoy de codificación en Eclipse y, según ella, la codificación de caracteres que estoy usando es Cp1252.
Ah, y sí, el código se supone que debe eliminar cualquier letras acentuadas, tales como una A y reemplazarlos con sus vogals básicos, es decir a-> a
Gracias de antemano
Solución
¿Es posible que si tiene caracteres de múltiples bytes, y se recorre cada personaje usando strlen()
para comprobar si se ha enrollado a través? strlen()
asume 1 byte == 1 carácter.
Me vería en existente bibliotecas de transliteración para PHP.