Cuando tenemos que hacer un buscador en una web php/mysql, usamos una consulta SQL como
select fields from table where field like ''%lo_que_busco%''
pero muchas veces esta sencilla consulta no funciona bien. Y "muchas veces" significa "cuando la cadena buscada tiene caracteres especiales". Siempre uso UTF-8 para todo, pero a pesar de esto, intento buscar "españa" con el buscador (con el caracter especial ''ñ''), y a veces no sale nada. Entonces, voy al programa administrador de mysql, ejecuto la consulta, y sí obtengo resultado. Entonces, ¿por qué falla el comando "mysql_query"? No lo se, he probado todos los trucos del mundo que encontré buscando en Google y nada. Así que los hechos son: En algunos servidores no puedo hacer búsquedas de palabras con caracteres especiales (en otros servidores, con el mismo código, sí obtengo resultado). ¿Algo pasa con la configuración mysql o PHP en el servidor? No lo se, pero si busco la misma palabra sin los caracteres especiales, entonces funciona siempre bien. Si busco "españa", nada. Si busco "espana", obtengo los resultados de "españa" y "espana". Así que me voy a cargar los caracteres especiales:
function convertspecialchars($input) {
$specialChars = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèé êëìíîïðñòóôõöøùúûüýÿñ";
$nonSpecialChars = "AAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaacee eeiiiionoooooouuuuyyn";
return strtr($input, $specialChars, $nonSpecialChars);
}