Foros del Web » Programando para Internet » PHP »

Conversión caracteres

Estas en el tema de Conversión caracteres en el foro de PHP en Foros del Web. Buenas a todos! Estoy intentando poner lo de las url-amigables y para ello le paso una cadena con el nombre de un curso por ejemplo. ...
  #1 (permalink)  
Antiguo 14/01/2010, 05:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Conversión caracteres

Buenas a todos!

Estoy intentando poner lo de las url-amigables y para ello le paso una cadena con el nombre de un curso por ejemplo. Para ello se supone que esta cadena no debe contener ni espacios en blanco, ni tildes, ni caracteres raros.

El problema que tengo es que los espacios en blanco me los sustituye sin problemas por -, pero las tildes no.
Si encuentra un caracter con tilde en vez de ponerme el caracter sin tilde directamente me lo suprime, es decir, imaginen que le paso Comunicación, pues en vez de devolver comunicacion, me devuelve comunicacin.

La cadena que le paso es leida directamente de base de datos.

Os pongo la función que encontré por algún foro:

Código PHP:
function urls_amigables($url) { 

// Tranformamos todo a minusculas 

$url strtolower($url); 

//Rememplazamos caracteres especiales latinos 

$find = array('á''é''í''ó''ú''ñ'); 

$repl = array('a''e''i''o''u''n'); 

$url str_replace ($find$repl$url); 

// Añaadimos los guiones 

$find = array(' ''&''\r\n''\n''+'); 
$url str_replace ($find'-'$url); 

// Eliminamos y Reemplazamos demás caracteres especiales 

$find = array('/[^a-z0-9\-<>]/''/[\-]+/''/<[^>]*>/'); 

$repl = array('''-'''); 

$url preg_replace ($find$repl$url); 

return 
$url


¿Cómo puedo solucionarlo?

Un saludo y gracias
  #2 (permalink)  
Antiguo 14/01/2010, 05:40
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Conversión caracteres

¿Has probado a mano por separado?
Código PHP:
Ver original
  1. $url = str_replace ("á", "a", $url);
  2. $url = str_replace ("é", "e", $url);
  3. $url = str_replace ("í", "i", $url);
  4. $url = str_replace ("ó", "o", $url);
  5. $url = str_replace ("ú", "u", $url);
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #3 (permalink)  
Antiguo 14/01/2010, 06:09
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Conversión caracteres

el único problema que veo es que no estas limpiando los array, y como usas el mismo nombre pues claro, los datos se van acumulando y hacen ineficiente la función.. usa diferentes nombres o limpia los array luego de usarlos =B

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 14/01/2010, 07:12
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Conversión caracteres

He probado lo que me habeis dicho por separado de reemplazar y no funciona.
También he cambiado el nombre de los array...y nada.

Estoy pensando que a lo mejor...puede ser que como va de bbdd no pase á sino alguna forma rara...

aunq cdo hago el echo con lo de la base de datos, muestra las tildes bien...El problema es que no sustituye las tildes, y entonces claro cuando llega más abajo pues lo toma como caracter raro y entoncees lo suprime.

Etiquetas: caracteres
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 17:47.