Foros del Web » Programando para Internet » PHP »

vocales con acentos "vs" vocales sin ellos

Estas en el tema de vocales con acentos "vs" vocales sin ellos en el foro de PHP en Foros del Web. Me han pedido que si tu introduces en la base de datos un nombre como 'pedro' y en la base de datos esta 'pedrö' 'pedró' ...
  #1 (permalink)  
Antiguo 09/03/2010, 06:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 15 años, 1 mes
Puntos: 0
vocales con acentos "vs" vocales sin ellos

Me han pedido que si tu introduces en la base de datos un nombre como 'pedro' y en la base de datos esta 'pedrö' 'pedró' y 'pedrõ' me saque esos 3 nombres, es decir meter los nombre sin acento y que te salgan todas las posibles combinaciones de ese nombre con vocales acentuadas...no se ni como empezar, me parece muy complicado.
Conoceis alguna funcion que haga algo parecido o algo que me pueda servir?
Estoy mirando por internet pero no encuentro nada..

Muchas gracias

  #2 (permalink)  
Antiguo 09/03/2010, 06:45
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: vocales con acentos "vs" vocales sin ellos

hay muchas formas:

SQL: where nombre like '%pedr%_%'

dependiendo de la base de datos y el juego de caracteres latin del campo, ni hace falta porque toma como iguales a los caracteres con o sin acentos.

tambein existen las funciones tipo soundex que analizan las claves de pronunciación similar, algunos dbms lo implementan

Última edición por maycolalvarez; 09/03/2010 a las 06:58
  #3 (permalink)  
Antiguo 09/03/2010, 06:45
 
Fecha de Ingreso: enero-2008
Ubicación: /España/Galicia
Mensajes: 928
Antigüedad: 16 años, 10 meses
Puntos: 21
Respuesta: vocales con acentos "vs" vocales sin ellos

no necesitas ninguna base de datos para hacer eso

osea pedro tendria que ser

pedró pédro pedrò pèdro pédró ¿?

eso es bastante facil con un while que reconozca bocales y haga todos las opciones posbiles
__________________
Compra y Vender artículos en https://www.losredactores.com o una comunidad de webmasters ? https://webeamos.com
  #4 (permalink)  
Antiguo 09/03/2010, 07:01
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: vocales con acentos "vs" vocales sin ellos

si, seria que comprobara en la BD todas las posibles conbinaciones de todas las vocales que tenga esa palabra con todos los acentos posibles en cada una de las vocales..a mi me parec un lio, no se..
  #5 (permalink)  
Antiguo 09/03/2010, 07:03
 
Fecha de Ingreso: enero-2008
Ubicación: /España/Galicia
Mensajes: 928
Antigüedad: 16 años, 10 meses
Puntos: 21
Respuesta: vocales con acentos "vs" vocales sin ellos

pero si son todas las combinaciones posibles existentes no tiene porque hacerlo con bases de datos, un algoritmo en php te lo puede hacer solo.

primero que compruebe cuantas vocales tiene la pabra

si tiene 3 digamos

vocal 1
vocal 2
vocal 3

pone vocal 1 en todas sus posibilides
luego la 2
luego la 3
luego la 1 en su posibilidad 1 y luego la vocal 2 y luego la 3 luego la vocal 1 en su posibilidad 2 y el resto igual... asi seria bucles
__________________
Compra y Vender artículos en https://www.losredactores.com o una comunidad de webmasters ? https://webeamos.com
  #6 (permalink)  
Antiguo 10/03/2010, 02:35
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: vocales con acentos "vs" vocales sin ellos

SainT se mas o menos como dices y mas que dificil parec un poco confuso pero lo que no entiendo bien es como comparar todas esas posibilidades en una base de de datos, he hecho un mini script que me valdria para encontrar las vocales de una palabra, dond estan y cuantas son, hasta ahi vale e incluso puedo hacer ahora que se combinen todas los posibles acentos en cada vocal, pero lo que no veo claro es que lo tengo que comparar es, ejemplo:

metes: 'pedro'

y en la base de datos esta: 'pedrö'
'pêdro'
'pedró'
.....
....
entonces te mostrara todos esos nombres que con las mismas vocales que intoroduces tienen otros acentos, pero como haces esa comparacion, primero haces todas las posibles combinaciones de esas vocales y comparas todos esos nombres (son 30 en este caso) con los posibles que haya en la BD??
Como se compara en una consulta 30 cosas con algo de la BD?
porque mi consulta es esta...

$sql = "select title, firstname, surname, company, address, postcode, tel, mobile_phone, fax, email, country

from customers

where ( (firstname = '$firstname')";

$result = send_sql($MySQL->db1, $sql);
}


no se si me entendeis..

Gracias!!
  #7 (permalink)  
Antiguo 10/03/2010, 05:10
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: vocales con acentos "vs" vocales sin ellos

Creo que lo más fácil es usar expresiones regulares.

Simplemente, tratas el nombre en php para que todas las vocales sean normales, y luego en sql usas la funcion regexp en el where.

Espero haber sido de ayuda! (Yo lo haria así, creo q es lo más rápido y óptimo!)
  #8 (permalink)  
Antiguo 10/03/2010, 05:54
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: vocales con acentos "vs" vocales sin ellos

parece buena idea, voy a pensar acerca de ello y de como hacerlo, lo que no sigo viendo muy claro es que en la variable tendre el nombre con las vocales sin acento y tengo que compararlo con todos los acentos de todas la vocales sin saber en que posicion estan ni nada...pero bueno me lo voy a mirar a ver que se puede hacer!!

Gracias!

Etiquetas: acentos
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 10:28.