Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Hacer que mi buscador omita acentos

Estas en el tema de Hacer que mi buscador omita acentos en el foro de PHP en Foros del Web. Hola, tengo una página montada en MediaWiki. He editado el código del buscador para que cada vez que se haga una búsqueda que no exista ...
  #1 (permalink)  
Antiguo 02/10/2014, 11:10
 
Fecha de Ingreso: septiembre-2012
Mensajes: 24
Antigüedad: 11 años, 7 meses
Puntos: 0
Hacer que mi buscador omita acentos

Hola,

tengo una página montada en MediaWiki.

He editado el código del buscador para que cada vez que se haga una búsqueda que no exista en la base de datos la cree.

Esta página que se crea no tiene contenido pero si aparece información relacionada con lo cual me interesa seguir manteniendo esta función.

El problema es que el buscador no es sensible a acentos, mayúsculas y minúsculas con lo cual estoy repitiendo conceptos como un loco.

Ejemplo: "Persona física" y "persona fisica" son dos conceptos diferentes lo cual es un error. "persona fisica" debería redirigirse a Persona física.

Ideas?

Saludos!
  #2 (permalink)  
Antiguo 02/10/2014, 11:31
Avatar de dcreate  
Fecha de Ingreso: octubre-2009
Ubicación: Veracruz
Mensajes: 536
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: Hacer que mi buscador omita acentos

y porque en lugar de buscar un concepto definido buscas el mas parecido con un like en tu consulta.
__________________
Somos lo que pensamos, como pensamos vivimos.
  #3 (permalink)  
Antiguo 03/10/2014, 01:29
 
Fecha de Ingreso: septiembre-2012
Mensajes: 24
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Hacer que mi buscador omita acentos

Mi buscador envía directamente al concepto, si el concepto no existe lo crea. No me sirve una aproximación.

Necesito omitir acentos y mayusculas
  #4 (permalink)  
Antiguo 03/10/2014, 01:37
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Hacer que mi buscador omita acentos

Pero si, como sugiere dcreate, usas una búsqueda con LIKE antes de crear el concepto (para ver si existe o no) te devolvería resultado tanto para "persona fisica" como para "persona física", por lo que si el primero existe, el segundo no se crearía y viceversa.

Si siempre quieres guardar los conceptos sin tildes ni mayúsculas, también puedes formatearlos antes de crearlos.
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #5 (permalink)  
Antiguo 03/10/2014, 04:44
 
Fecha de Ingreso: septiembre-2012
Mensajes: 24
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Hacer que mi buscador omita acentos

Cita:
Iniciado por json Ver Mensaje
Pero si, como sugiere dcreate, usas una búsqueda con LIKE antes de crear el concepto (para ver si existe o no) te devolvería resultado tanto para "persona fisica" como para "persona física", por lo que si el primero existe, el segundo no se crearía y viceversa.

Si siempre quieres guardar los conceptos sin tildes ni mayúsculas, también puedes formatearlos antes de crearlos.
No me sirve hacerlo a través de query con LIKE porque quizá también exista "persona fisica aaaaaa"

que sea la búsqueda que alguien haya hecho en mi web. Eso debería ser un concepto nuevo.

Necesito formatear todo lo que entra en la BBDD pero que luego lo visualice sin faltas de ortografía...

Gracias por las respuestas
  #6 (permalink)  
Antiguo 05/10/2014, 20:41
 
Fecha de Ingreso: agosto-2014
Mensajes: 4
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Hacer que mi buscador omita acentos

Podrías usar expresiones regulares con el preg_match() para cuando en el buscador encuentre caracteres como áéíóúÁÉÍÓÚ que convierta a aeiouAEIOU, con mayúsculas y minusculas lo mismo, aunque creo que no es estrictamente necesario, no estoy 100% seguro.
  #7 (permalink)  
Antiguo 05/10/2014, 21:19
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Hacer que mi buscador omita acentos

La solucion es simple y directa, dile a tu base de datos que ese campo es insensible a mayusculas y a los acentos, ¿Como? cambiando el COLLATE del campo por: "utf8_unicode_ci" solo con ese cambio tendras tu buscador como lo quieres en todos lados de forma definitiva.

Si no deseas hacer este cambio por las razones que sean, entonces puedes realizarlo en cada consulta asi:

Código MySQL:
Ver original
  1. select campo from `tabela`
  2. where `campo` like _utf8 'Persona física' collate utf8_unicode_ci;
Eso solo tendra validez dentro de esa query.

Si quieres que tenga validez para toda una seria de operaciones, podrias cambiar la COLLATE desde php con mysql_set_charset
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #8 (permalink)  
Antiguo 06/10/2014, 09:10
 
Fecha de Ingreso: septiembre-2012
Mensajes: 24
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Hacer que mi buscador omita acentos

Cita:
Iniciado por NSD Ver Mensaje
La solucion es simple y directa, dile a tu base de datos que ese campo es insensible a mayusculas y a los acentos, ¿Como? cambiando el COLLATE del campo por: "utf8_unicode_ci" solo con ese cambio tendras tu buscador como lo quieres en todos lados de forma definitiva.

Si no deseas hacer este cambio por las razones que sean, entonces puedes realizarlo en cada consulta asi:

Código MySQL:
Ver original
  1. select campo from `tabela`
  2. where `campo` like _utf8 'Persona física' collate utf8_unicode_ci;
Eso solo tendra validez dentro de esa query.

Si quieres que tenga validez para toda una seria de operaciones, podrias cambiar la COLLATE desde php con [URL="http://php.net/manual/en/function.mysql-set-charset.php"]mysql_set_charset[/URL]
Mil gracias!

Doy tema por cerrado!

Etiquetas: acentos, buscador
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 20:55.