Foros del Web » Programando para Internet » PHP »

Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Estas en el tema de Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan en el foro de PHP en Foros del Web. Tengo un dilema! y esque e probado muchisimas formas de quitar las tildes y las Ñs... y en todos los casos me devuelve la variable ...
  #1 (permalink)  
Antiguo 03/03/2010, 10:25
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Tengo un dilema! y esque e probado muchisimas formas de quitar las tildes y las Ñs... y en todos los casos me devuelve la variable tal y como se envia con tildes y con Ñs... y me estoy desesperando! porque nose a que se deve las funciones que utilizo si las programo para cambiar una frace por otra funciona perfectamente... pero al acerlo para que sustituya una letra tildada o especial y no lo ace... si hay algien que pueda ayudarme lo agradeseria!!

Aqui os dejo unos ejemplos para quitar las tildes y las Ñs que utilizo...

Código PHP:
function limpieza($cadena)
    {
    
$vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","ü","ö","Ö","ï","ä","ë","Ü","Ï","Ä","Ë");
    
$vocales= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E");
        
    
$cadena=str_replace($vocalti$vocales,$cadena);
    
    return 
$cadena;
    }

function 
sinTildes($texto) {
    return 
strtr($texto,"áéíóúüÁÉÍÓÚÜñÑ","aeiouuAEIOUUnN");
    }

function 
retornarStringValido($cadena)
    {
        
$login strtolower($cadena);
        
$b     = array("á","é","í","ó","ú","ä","ë","ï","ö","ü","à","è","ì","ò","ù","ñ");
        
$c     = array("a","e","i","o","u","a","e","i","o","u","a","e","i","o","u","n");
        
$login str_replace($b,$c,$login);
        return 
$login;
    }

function 
quitartilde($texto)
{
                
$buscar[0] = '/á/';
        
$buscar[1] = '/é/';
        
$buscar[2] = '/í/';
        
$buscar[3] = '/ó/';
        
$buscar[4] = '/ú/';
        
$buscar[5] = '/ü/';
            
        
$buscar[6] = '/Á/';
        
$buscar[7] = '/É/';
        
$buscar[8] = '/Í/';
        
$buscar[9] = '/Ó/';
        
$buscar[10] = '/Ú/';
        
$buscar[11] = '/Ü/';
                    
        
$buscar[12] = '/ñ/';
        
$buscar[13] = '/Ñ/';                        
                        
                        
        
$cambiar[0] = 'a';
        
$cambiar[1] = 'e';
        
$cambiar[2] = 'i';
        
$cambiar[3] = 'o';
        
$cambiar[4] = 'u';
        
$cambiar[5] = 'u';
    
        
$cambiar[6] = 'A';
        
$cambiar[7] = 'E';
        
$cambiar[8] = 'I';
        
$cambiar[9] = 'O';
        
$cambiar[10] = 'U';
        
$cambiar[11] = 'U';
    
        
$cambiar[12] = 'n';
        
$cambiar[13] = 'N';
    
        
$archivo_salida preg_replace($buscar$cambiar$texto);
return 
$archivo_salida;

  #2 (permalink)  
Antiguo 03/03/2010, 10:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 2 meses
Puntos: 1516
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Hice pruebas usando la primera función y me devolvió como debe ser.
Código PHP:
Ver original
  1. <?php
  2. function limpieza($cadena){
  3.     $vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","ü","ö","Ö","ï","ä","ë","Ü","Ï","Ä","Ë");
  4.     $vocales= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E");
  5.     $cadena=str_replace($vocalti,$vocales,$cadena);
  6.     return $cadena;
  7. }
  8. echo limpieza("Algo va aquí, con acentos y ñ áéíóú");
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 03/03/2010, 10:36
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 10 años
Puntos: 150
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

y yo probe la de sinTildes() y va perfecto. ¿puede que sea por la codificacion de tu archivo? si haces echo sinTildes("áéíóúñÑ"); ¿que sale en pantalla? o mejor dale a ver codigo fuente y pon aqui lo que devuelve
  #4 (permalink)  
Antiguo 03/03/2010, 10:42
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Lo se si es por eso que me e desesperado porque al obtener el texto de la base de datos guardarla en una variable y pasarsela a la funcion me devuelve la variable tal cual sin modificarla y nose pork!!!

Código PHP:
$archivo_salida $marca_tit[0] . "-" $localidad_tit[0] . "-" $id['id'];
$archivo_salida limpieza($archivo_salida);

echo 
$archivo_salida//imprime esto "piso-coín-9" en donde deveria decir "piso-coin-9" 

Última edición por DyDPersonal; 03/03/2010 a las 10:44 Razón: me comi la tilde
  #5 (permalink)  
Antiguo 03/03/2010, 10:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 2 meses
Puntos: 1516
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Lo volví a probar de esta forma y resultó
Código PHP:
Ver original
  1. <?php
  2. function limpieza($cadena){
  3.     $vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","ü","ö","Ö","ï","ä","ë","Ü","Ï","Ä","Ë");
  4.     $vocales= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E");
  5.     $cadena=str_replace($vocalti,$vocales,$cadena);
  6.     return $cadena;
  7. }
  8. $variable = "Algo va aquí, con acentos y ñ áéíóú";
  9. $variable = limpieza($variable);
  10. echo $variable; //Algo va aqui, con acentos y n aeiou
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 03/03/2010, 10:52
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Pero te repito que yo el texto lo obtengo de la base de datos pero aun asi nose pork no me funciona... si ya se k funciona perfectamente le pasas texto escrito como aces y funciona pero al utilizarlo con texto de la base de datos no ace nada nose pork...
  #7 (permalink)  
Antiguo 03/03/2010, 10:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 2 meses
Puntos: 1516
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Desconozco por qué no te está resultando, podrías cambiar la variable para hacer una pequeña prueba, me refiero
Código PHP:
Ver original
  1. $archivo_salida = $marca_tit[0] . "-" . $localidad_tit[0] . "-" . $id['id'];
  2. $archivo_salida_cambiado = limpieza($archivo_salida);
  3. echo $archivo_salida_cambiado;
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 03/03/2010, 10:58
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Cita:
Iniciado por abimaelrc Ver Mensaje
Lo volví a probar de esta forma y resultó
Código PHP:
Ver original
  1. <?php
  2. function limpieza($cadena){
  3.     $vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","ü","ö","Ö","ï","ä","ë","Ü","Ï","Ä","Ë");
  4.     $vocales= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E");
  5.     $cadena=str_replace($vocalti,$vocales,$cadena);
  6.     return $cadena;
  7. }
  8. $variable = "Algo va aquí, con acentos y ñ áéíóú";
  9. $variable = limpieza($variable);
  10. echo $variable; //Algo va aqui, con acentos y n aeiou
Código PHP:
function limpieza($cadena)
    {
    
$vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","ü","ö","Ö","ï","ä","ë","Ü","Ï","Ä","Ë");
    
$vocales= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E");
        
    
$cadena=str_replace($vocalti$vocales,$cadena);
    
    return 
$cadena;
    }

//nombre del archivo
        
$archivo_salida $marca_tit[0] . "-" $localidad_tit[0] . "-" $id['id'];
        
$archivo_salida limpieza($archivo_salida);

echo echo 
$archivo_salida " - ".limpieza("Coín");
//Piso-Coín-9-Coin 
Si tedas cuenta todo el texto obtenido de la base de datos no lo transforma encambio el Coín dado directamente si... pork??? ya estoy desesperado y no me digas que funciona pork se que funciona lo que nose es porque no me funciona con las variables obtenidas de la Base de Datos

Última edición por DyDPersonal; 03/03/2010 a las 11:02 Razón: Puse otra funcion
  #9 (permalink)  
Antiguo 03/03/2010, 10:59
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Cita:
Iniciado por abimaelrc Ver Mensaje
Desconozco por qué no te está resultando, podrías cambiar la variable para hacer una pequeña prueba, me refiero
Código PHP:
Ver original
  1. $archivo_salida = $marca_tit[0] . "-" . $localidad_tit[0] . "-" . $id['id'];
  2. $archivo_salida_cambiado = limpieza($archivo_salida);
  3. echo $archivo_salida_cambiado;
Ya lo e probado y es =..
  #10 (permalink)  
Antiguo 03/03/2010, 11:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 2 meses
Puntos: 1516
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Sigo tanteando, porque no veo la razón que no te funciona. Trata convirtiendo la variable a string ejemplo
Código PHP:
Ver original
  1. $archivo_salida = $marca_tit[0] . "-" . $localidad_tit[0] . "-" . $id['id'];
  2. $archivo_salida = (string)$archivo_salida;
  3. $archivo_salida_cambiado = limpieza($archivo_salida);
  4. echo $archivo_salida_cambiado;
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 03/03/2010, 11:06
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Nop... sige sin cambiar las tildes... en la vase de dato el campo es vachar...
  #12 (permalink)  
Antiguo 03/03/2010, 11:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 2 meses
Puntos: 1516
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Vamos primero con algo importante. Borra el cache, cierra el navegador y vuelve a ejecutar el código. El problema lo digo principalmente si estas usando Internet Explorer. Trata haciendo eso y dinos como te va.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 03/03/2010, 11:15
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Cita:
Iniciado por abimaelrc Ver Mensaje
Vamos primero con algo importante. Borra el cache, cierra el navegador y vuelve a ejecutar el código. El problema lo digo principalmente si estas usando Internet Explorer. Trata haciendo eso y dinos como te va.
Uso Mozilla Firefox... y no tiene relacion lo e echo y nada esk nose... yo estoy 100% que es por las variables procedentes de la base de datos...
  #14 (permalink)  
Antiguo 03/03/2010, 11:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 2 meses
Puntos: 1516
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Y escribiendo directamente el resultado de la base de datos en la función, me refiero
Código PHP:
Ver original
  1. $archivo_salida = limpieza($marca_tit[0] . "-" . $localidad_tit[0] . "-" . $id['id']);
  2. echo $archivo_salida;
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 03/03/2010, 11:21
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 10 años
Puntos: 150
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Por probar que no quede...

Código PHP:
Ver original
  1. $archivo_salida = utf8_encode($marca_tit[0] . "-" . $localidad_tit[0] . "-" . $id['id']);
  2. $archivo_salida = limpieza($archivo_salida);
  #16 (permalink)  
Antiguo 03/03/2010, 11:23
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Cita:
Iniciado por abimaelrc Ver Mensaje
Y escribiendo directamente el resultado de la base de datos en la función, me refiero
Código PHP:
Ver original
  1. $archivo_salida = limpieza($marca_tit[0] . "-" . $localidad_tit[0] . "-" . $id['id']);
  2. echo $archivo_salida;
Sigue =...
Por el numero del id no es... por los giones tampoco... sin envargo si sustituyo las variables procedentes de la base de datos por variables dandole un valor predefinido "texto con tilde áéíóú" me lo sustituye correctamente pero si a su ves le doy el valor de las variables procedentes de la base de datos a otras variables sige =... asique yo creo que son las variables procedentes de la base de datos...
  #17 (permalink)  
Antiguo 03/03/2010, 11:26
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Cita:
Iniciado por Vun Ver Mensaje
Por probar que no quede...

Código PHP:
Ver original
  1. $archivo_salida = utf8_encode($marca_tit[0] . "-" . $localidad_tit[0] . "-" . $id['id']);
  2. $archivo_salida = limpieza($archivo_salida);
Joder tio muchas gracias me cago en mi madre ya funciona!! xD..
  #18 (permalink)  
Antiguo 03/03/2010, 11:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 2 meses
Puntos: 1516
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Entonces es como recibias los datos de la base de datos. Lo más probable es que tengas el encode de esa tabla como UTF8.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #19 (permalink)  
Antiguo 03/03/2010, 11:35
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 10 años
Puntos: 150
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

jeje, en mi web tengo que usar esa funcion tambien cuando traigo algunos datos de la base de datos, creo que son los campos tipo TEXT, ni seguro estoy, estuve tambien una tarde comiendome la cabeza igual que tu
  #20 (permalink)  
Antiguo 03/03/2010, 11:45
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Cita:
Iniciado por Vun Ver Mensaje
jeje, en mi web tengo que usar esa funcion tambien cuando traigo algunos datos de la base de datos, creo que son los campos tipo TEXT, ni seguro estoy, estuve tambien una tarde comiendome la cabeza igual que tu
Muchas gracias yo llevo mas tiempo lo que pasa que me di por vencido y lo utilizaba pero me comia todos los caracteres especiales y me e cansado y queria arreglarlo...
Gracias xD
  #21 (permalink)  
Antiguo 04/03/2010, 09:54
DyDPersonal
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Quitar Tildes y Ñs para enlaces amigables... Dilema no me funcionan

Aqui dejo la funcion que funciona perfectamente combierte cualquier cadena en una url amigable y recomiendo que se aga minuscula despues de quitar las tildes sino hace conflicto...

Código PHP:
function limpieza_url($cadena)
{    
$cadena utf8_encode($cadena);
    
$vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","ü","ö","Ö","ï","ä","ë","Ü","Ï","Ä","Ë"," ","\r\n","\n");
    
$vocales= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E","-","-","-");
    
$cadena=str_replace($vocalti$vocales,$cadena);
    
$cadena strtolower($cadena);
    
$find = array('/[^a-z0-9\-<>]/''/[\-]+/''/<[^>]*>/'); 
    
$repl = array('''-''');
    
$cadena =  preg_replace($find$repl$cadena) . ".php";
    return 
$cadena;

Saludos y gracias por el apoyo!!

Etiquetas: amigables, enlaces, funcionan, quitar, tildes
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 14:42.