Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/08/2006, 13:58
Avatar de KarenFerreira
KarenFerreira
 
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 1 mes
Puntos: 2
Pregunta Procesar cadena de caracteres

Hola, pues bien, resulta que tengo una función que recibe una cadena y debería transformarla en algo de este tipo mas o menos:

Si recibo "pensión"
debería quedar: "p[eéèêëEÉÈÊË]ns"[iíïîìIÍÏÎÌ][oóôöòOÓÔÖÒ]n",

esto con el fin de enviarla a una consulta postgre sql y hacer una comparacion con "similar to", el caso es que no esta haciendo lo que debería porque cuando le digo pensión y muestro la variable para ver si la recibió bien, efectivamente me muestra

"pensión"

pero cuando empiezo a separar la cadena caracter por caracter para reemplazarlos por las cadenas correspondientes a las vocales, entonces me sale

"p e n s i ? ? n"

y cuando vuelve a unir mi cadena y le digo que la muestre en pantalla para saber como se ve, entonces me muestra

"p[e����E����]ns[i����I����]ón"

lo cual es extraño porque aparte de no modificarme la o, la toma como dos caracteres por separado y los caracteres que vienen tildados de diferentes formas dentro de mis cadenas de reemplazo, se cambian por interrogantes. La función que estoy utilizando es la siguiente:

Código PHP:

function tildes($varparam)
{
    
$res "";
    for(
$i=0$i<strlen($varparam); $i++)
    {
        
$cur substr($varparam$i1);
        if(
$cur=="e"||$cur=="é"||$cur=="è"||$cur=="ê"||$cur=="ë"||$cur=="E"||$cur=="É"||$cur=="È"||$cur=="Ê"||$cur=="Ë")
          
$res $res."[eéèêëEÉÈÊË]";
        else
        if (
$cur=="a"||$cur=="á"||$cur=="à"||$cur=="â"||$cur=="ä"||$cur=="A"||$cur=="Á"||$cur=="À"||$cur=="Â"||$cur=="Ä")
            
$res $res."[aáàâäAÁÀÂÄ]";
        else
        if (
$cur=="i"||$cur=="í"||$cur=="ì"||$cur=="ï"||$cur=="î"||$cur=="I"||$cur=="Í"||$cur=="Ì"||$cur=="Ï"||$cur=="Î")
            
$res $res."[iíïîìIÍÏÎÌ]";
        else
        if (
$cur=="o"||$cur=="&oacute;"||$cur=="ô"||$cur=="ö"||$cur=="ò"||$cur=="O"||$cur=="Ó"||$cur=="Ô"||$cur=="Ö"||$cur=="Ò")
            
$res $res."[oóôöòOÓÔÖÒ]";
        else
        if (
$cur=="u"||$cur=="ú"||$cur=="ù"||$cur=="û"||$cur=="ü"||$cur=="U"||$cur=="Ú"||$cur=="Ù"||$cur=="Û"||$cur=="Ü")
            
$res $res."[uúûüùUÚÛÜÙ]";
        else
        if (
$cur=="c"||$cur=="ç"||$cur=="C"||$cur=="Ç")
            
$res $res."[cCçÇ]";
        else
            
$res $res.$cur;
    }

    return 
$res;

no tengo ni la más mínima idea de a que cosa puedo atribuirle ese cambio tan extraño, alguien tiene alguna idea de eso?
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.