Foros del Web » Programando para Internet » PHP »

Problema con limpieza de cadena...

Estas en el tema de Problema con limpieza de cadena... en el foro de PHP en Foros del Web. Hola tengo una página php donde recibo una variable tipo: www.midominio.com/index.php?title=XáX+XñX Como verán la variable title se la recibe con un sin numero de caracteres ...
  #1 (permalink)  
Antiguo 20/10/2012, 09:25
 
Fecha de Ingreso: abril-2012
Mensajes: 88
Antigüedad: 12 años, 7 meses
Puntos: 1
Pregunta Problema con limpieza de cadena...

Hola tengo una página php donde recibo una variable tipo:

www.midominio.com/index.php?title=XáX+XñX

Como verán la variable title se la recibe con un sin numero de caracteres (+) puesto que al pasar la variable los espacios se vuelven ese signo, también se pasa con tildes y ñ. El problema es el siguiente:

Al recibir la variable title vía enviada via GET intento limpiarla para luego volver a enviarla algo así:

index.php?title=xax+xnx

Lo cual más una rewriterule en htaccess me lo dejaría así:

title-xax-xnx.html


Para limpiar la cadena utilizo una función de este tipo:

Código PHP:

$str 
$_GET['title'];

function 
limpiarURL($str) {
    
//Quitar tildes y ñ
    
$tildes = array('á','é','í','ó','ú','ñ','Á','É','Í','Ó','Ú','Ñ');
    
$vocales = array('a','e','i','o','u','n','A','E','I','O','U','N');
    
$str str_replace($tildes,$vocales,$str);
 
    
//Quitar símbolos
    
$simbolos = array("=","¿","?","¡","!","'","%","$","€","(",")","[","]","{","}","*","+","·",".","< ",">");
    
$i 0;
    while(
$simbolos[$i]){
    
$str str_replace($simbolos[$i], ""$str);
    
$i++;
    }
 
    
//Quitar espacios
    
$str str_replace(" ","_",$str);
 
    
//Pasar a minúsculas
    
$str strtolower($str);
 
    return 
$str;
}

echo  
limpiarURL($str); 

Entonces teniendo la variable limpia volvería a hacer una redirección para que se pase ya limpia...

Mi problema es que la función limpia o reemplaza todos los caracteres especiales menos las letras tildadas y las ñ...

PRegunta: ¿Existe una forma para reemplazar caracteres espaciales directamente desde htaccess?

Si no existe una rewrite rule para limpiar caracteres especiales necesito saber, ¿Por qué la función no está limpiando las tildes y ñ?; ¿Estará mal aplicada?

Aclaro que estoy en wordpress.org...

Saludos...
  #2 (permalink)  
Antiguo 20/10/2012, 09:38
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: Problema con limpieza de cadena...

agragar esto y listo:

Código PHP:
Ver original
  1. $str = str_replace('ñ','n',$str);
  2. $str = str_replace('Ñ','N',$str);
__________________
la la la
  #3 (permalink)  
Antiguo 20/10/2012, 10:22
 
Fecha de Ingreso: abril-2012
Mensajes: 88
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Problema con limpieza de cadena...

Cita:
Iniciado por truman_truman Ver Mensaje
agragar esto y listo:

Código PHP:
Ver original
  1. $str = str_replace('ñ','n',$str);
  2. $str = str_replace('Ñ','N',$str);

La ñ ya está puesta en el codigo de arriba para ser reemplazada... el problema es que no reemplaza ni las ñ ni las vocales tildadas...

Al poner en la barra de navegación:
http://midominio.com/index.php?title=ñ+á


La paso por la función limpiar e imprimo la función y se muestra

ñ-acomo ves no la limpia de las ñ y tildes, pero si de los demás caracteres, es decir la función esta sirviendo a medias...
  #4 (permalink)  
Antiguo 20/10/2012, 10:50
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: Problema con limpieza de cadena...

probá con utf8_encode($cadena) o con utf8_decode($cadena)
__________________
la la la
  #5 (permalink)  
Antiguo 20/10/2012, 16:51
 
Fecha de Ingreso: abril-2012
Mensajes: 88
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Problema con limpieza de cadena...

Cita:
Iniciado por truman_truman Ver Mensaje
probá con utf8_encode($cadena) o con utf8_decode($cadena)
Si gracias ya lo había pensado primero con base64 y luego se me prendió el foco, y me dije puede ser un problema de codificación... y esa había sido la solución... Igual muchísimas gracias...

Una pregunta más desde .htaccess no se puede reemplazar o limpiar estos caracteres especiales directamente?


Saludos...

Etiquetas: caracteres, limpiar, rewrite
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 12:10.