Foros del Web » Programando para Internet » PHP »

Reemplazar acentos

Estas en el tema de Reemplazar acentos en el foro de PHP en Foros del Web. Buenos días : Tengo el siguiente script para ignorar acentos en una consulta mysql. ¿Sabeis si se puede abreviar de alguna manera? Gracias Código PHP: ...
  #1 (permalink)  
Antiguo 28/02/2009, 04:49
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 0
Reemplazar acentos

Buenos días :
Tengo el siguiente script para ignorar acentos en una consulta mysql.
¿Sabeis si se puede abreviar de alguna manera?
Gracias

Código PHP:
$contenido=ereg_replace("á","a",$contenido); 
$contenido=ereg_replace("é","e",$contenido); 
$contenido=ereg_replace("í","i",$contenido); 
$contenido=ereg_replace("ó","o",$contenido); 
$contenido=ereg_replace("ú","u",$contenido); 
$contenido=ereg_replace("Á","A",$contenido); 
$contenido=ereg_replace("É","E",$contenido); 
$contenido=ereg_replace("Í","I",$contenido); 
$contenido=ereg_replace("Ó","O",$contenido); 
$contenido=ereg_replace("Ú","U",$contenido); 
  #2 (permalink)  
Antiguo 28/02/2009, 05:51
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Reemplazar acentos

Con arrays:

Código PHP:
$letras_malas = array("á""é""í""ó""ú""Á""É""Í""Ó""Ú");
$letras_buenas = array("a""e""i""o""u""A""E""I""O""U");

$contenido str_replace($letras_malas$letras_buenas$contenido); 
  #3 (permalink)  
Antiguo 28/02/2009, 08:23
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Reemplazar acentos

Si utilizas la codificacion utf8_spanish_ci MySQL no diferencia entre á y a. O.o Asi te evitas trabajo innecesario.
  #4 (permalink)  
Antiguo 28/02/2009, 09:36
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Reemplazar acentos

Hola:

Si efectivamente uso utf-8-spanish, pero el problemas surge cuando se hace una consulta con varias palabras.

ejemplo: poblaciones de mi país.
He intentado hacer busquedas con fulltext en vez de like, pero no se por que razón mi base de datos no me permite alterar la tabla a fulltext, supongo que es porque ya tiene datos introducidos, aunque la he cambiado a Myssian de Inmodb. Sasludos
  #5 (permalink)  
Antiguo 28/02/2009, 09:45
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Reemplazar acentos

InnoDB no soporta hacer busquedas FULLTEXT, probablemente habia sido por eso.
  #6 (permalink)  
Antiguo 28/02/2009, 10:03
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Reemplazar acentos

no... la tabla la cambie a Myssian que si lo soporta, pero al cambiar el indice a fulltext me da error el mysql. Y yo creo que es por que tiene datos, ya que si hago la prueba con una tabla nueva sin datos si me soporta el fulltext.
Leí, no recuerdo donde, que había un truquillo para realizar este cambio con tablas ya trabajadas ¿ Tu sabes algo?.

no obstante creo que debe haber alguna solución intermedia con like para realizar una búsqueda con palabras compuestas con acentos en alguna de ellas.

Si yo quiero obtener datos de una tabla cuya población sea por ej. Palma del río
me de los de" Palma del río" y "Palma de rio"
Gracias
  #7 (permalink)  
Antiguo 28/02/2009, 10:12
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Reemplazar acentos

Si tienes el COLLATE de tu base de datos como utf8_spanish_ci entonces no deberia diferenciar entre acentos, echale una mirada a este enlace:

http://www.stan.com.mx/topics/view/12

No creo que el usar LIKE cambie eso.
  #8 (permalink)  
Antiguo 28/02/2009, 10:25
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Reemplazar acentos

Gracias a todos
Ya lo solucioné.

mi problema estaba en qwue en el servidor local no tenia configurado para soportar esta función. En el servidor ajeno funciona perfectamente.
Dejo el script de búsqueda por si le sirve a alguien:

Código PHP:
$_pagi_sql = ("SELECT * FROM restaurantes WHERE restaurante = '$provincia' and MATCH localidad AGAINST ('$buscador') and preciocarta   LIKE '%$buscador1%' and cocina  LIKE '%$buscador2%' ORDER BY destacado desc, cp ASC"); 
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 18:35.