Mayúsculas y minúsculas en PHP
A la hora de buscar una solución, como programador, he usado las funciones de php strtolower(), strtoupper() y ucfirst(), pero siempre con un pequeño problema en las vocales acentuadas, que no las reconoce como tal y, consecuentemente, no realiza el cambio:
<?php echo strtoupper("hola tío"); # HOLA TíO echo strtolower("hola TÍO"); # hola tÍo echo ucfirst(strtolower("hola TÍO")); # Hola tÍo ?>Con esto quiero llegar a la solución perfecta (hasta la fecha), y es combinar el uso de las funciones anteriormente mencionadas con strstr(), obteniendo esta vez el resultado deseado:
<?php echo strtr(strtoupper("hola tío"), "àáâãäåæçèéêëìíîïðñòóôõöøùüú", "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ"); # HOLA TÍO echo strtr(strtolower("HOLA TÍO"), "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ", "àáâãäåæçèéêëìíîïðñòóôõöøùüú"); # hola tío ?>Imagino que, como todo en esta vida, será mejorable metiéndonos con las variables language, etc... pero de momento me ha sacado del apuro.
Comentarios
PD: Cuanto tiempo sin pasar por aquí :-)
Para cambiar las primeras letras a mayusculas :
$nombres = "juan apablaza león";
$nombres = ucwords(strtolower($nombres));
El resultante seria Juan Apablaza León
Salu2
Ej.
echo strtr(strtoupper("xâyázà"), "àáâ", "AAA");
?>
Imprime: XAYAZA
?>
con esto funciona perfectamnetnte el primer ejemplo de esta pagina, es decir escribe bien los acentos y tilse de las ñ o Ñ.
Saludos.
function changeName($name)
{
$name = strtr(strtolower($name), "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ", "àáâãäåæçèéêëìíîïðñòóôõöøùüú");
$name = explode(" ",$name);
$name2 = array();
for($i=0;$i
$inicial = strtr(strtoupper(mb_substr($name[$i], 0, 1)),"àáâãäåæçèéêëìíîïðñòóôõöøùüú","ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ");
$continuacio = mb_substr($name[$i], 1, strlen($name[$i])-1);
$name2[] = $inicial.$continuacio;
}
return implode(" ",$name2);
}
gracias
GRACIAS
Para los nombres propios y otros datos que requieren mantener nombres uso
Excelente solución.