strtolower y los acentos en php
En php existe una función muy simple que te pasa una cadena dada a minúsculas. Esta función es strtolower y, a priori no tiene mucha complicación. Pero cuando un día empiezas a ver tu base de datos o sitio web con palabras malformadas te mosquea, empiezas a estudiar el problema y concluyes que no pasa bien a minúsculas los caracteres que no pertenecen al ascii-7. En teoría depende del locale de la maquina, pero ¿porque hacer código dependiente de mil variables de sistema?.
Por lo tanto la función, tan necesaria como simple, no nos vale por si misma para el propio idioma español ya que convierte cadenas como "LOGROÑO" a "logroÑo" y "DÍA" a "dÍa".
La solución pasa por hacer un paso previo al strtower que convierta estos caracteres:
Es mejor poner los caracteres acentuados con chr o hexadecimal para no tener problemas cuando cambias a un sistema de ficheros sin soporte local para esos caracteres.
Consejo: cuando usas una función php, lee los comentarios de la gente bajo la explicación de la sintaxis en la referencia de la web, te ahorrará trabajo.
Mayo 24th, 2007 at 10:35 am
Recientemente he estado haciendo una web de gramática alemana y he podido observar las aberraciones a las que se pueden llegar si no se lleva cuidado con los CharSet y los Collation de MySQL y de PHP …
Por parte de PHP siempre que puedo utilizo las funciones que comienzan por mb_ (multibyte string) y cuando no puedo (preg_replace_callback por ejemplo no está migrada a multibyte), pues utilizo utf8_decode y luego utf8_encode …
Septiembre 28th, 2007 at 18:41 pm
“Consejo: cuando usas una función php, lee los comentarios de la gente bajo la explicación de la sintaxis en la referencia de la web, te ahorrará trabajo.”
que gran verdad.
Pues nada, se agradece encontrar estas referencias por ahí, llevo años usando strtolower y no lo sabía!
Por alguna extraña razón nunca tuve conflictos, con los acentos por ejemplo, imagino que la usé siempre con caracteres “estándares”, anglosajones… para chequeos de formularios, nombres de archivo… digo yo ^^
Lo dicho, se agradece
PD: UTF-8, UTF-8, UTF-8 gg
Octubre 22nd, 2007 at 0:47 am
Muchisimas gracias por este post. Tenia el problema de que no no podia poner en minusculas palabras acentuadas. Pero con tu post ya resolvi mi problema.
Saludos.
Septiembre 2nd, 2008 at 8:18 am
Muchas gracias por el aporte me ha sido de gran utilidad.
Saludos.