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, $i, 1);
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=="ó"||$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;
}