Foros del Web » Programando para Internet » PHP »

Problema con caracteres especiales en buscador

Estas en el tema de Problema con caracteres especiales en buscador en el foro de PHP en Foros del Web. Buenos días, Ante todo daros las gracias de antemano y deciros que llevo toda la mañana intentando dar con la solución a mi problema pero ...
  #1 (permalink)  
Antiguo 23/12/2010, 05:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 7 meses
Puntos: 0
Problema con caracteres especiales en buscador

Buenos días,

Ante todo daros las gracias de antemano y deciros que llevo toda la mañana intentando dar con la solución a mi problema pero aunque estoy seguro que está, no encuentro ninguna solución en los foros.

Os explico mi problema. He hecho una aplicación de gestión de contenidos para una empresa bastante sencilla, un formulario para introducir noticias con un wysiwyg, posibilidad de subir documentos, fotos... y posibilidad de elegir la noticia que quieren publicar en cda momento.

Todo funciona correctamente, mi problema viene porque tb tengo que hacerles un buscador sencillo y aparentemente funciona con todo salvo con los caracteres especiales. Todo parece venir de que el wysiwyg envía a la base de datos los caracteres especiales convertidos en entidades html por lo que al llamarlos desde la base de datos y compararlos con las palabras clave si hay caracteres especiales de por medio nunca coinciden y por tanto no se muestran.

El tema es conseguir una función que traduzca los caracteres especiales de la palabra clave en entidades html o lo que sería mejor convertir tanto las entidades html como los literaes en caracteres simples para que la busqueda sirva tanto si los usan como si no.

Si alguno conoce una función en php que haga eso u otra forma de hacerlo se lo agradezco. Me estoy volviendo loco con este tema.

Supongo que no lo necesitaréis, pero el código que estoy usando para las búsquedas es para búsquedas de 1 palabra:

Código PHP:
$sql_select mysql_query("SELECT * FROM noticias WHERE titulo LIKE '%" mysql_real_escape_string($buscar) . "%' OR contenido LIKE '%" mysql_real_escape_string($buscar) . "%'"); 
Para varias palabras mi intención es usar la función Match Against, pero todavía no la tengo funcionando.

Un saludo
  #2 (permalink)  
Antiguo 23/12/2010, 07:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con caracteres especiales en buscador

html_entity_decode lo hace. Aunque lo ideal sería guardar en la base de datos tal como lo escribe el usuario; y convertir a entidades HTML sólo a la hora de mostrar los datos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 23/12/2010, 08:39
Avatar de _-ZeuS-_  
Fecha de Ingreso: junio-2007
Ubicación: Quito, Ecuador! ;)
Mensajes: 100
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Problema con caracteres especiales en buscador

si utilizas el standar de codificación de caracteres UTF-8 al guardar en la base lo puedes hacer directamente con mysql_real_scape_string y al mostrar si los datos son con caracteres podrías usar utf8_decode o utf8_encode a mi me ha funcionado en varios sistemas.

Etiquetas: caracteres, especiales, buscadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:14.