Foros del Web » Programando para Internet » PHP »

problema con las tildes y las ñ

Estas en el tema de problema con las tildes y las ñ en el foro de PHP en Foros del Web. buenas de nuevo. Os cuento mi problema. he creado un formulario de inscripción, y capturo la información de la siguiente manera: $cuerpo .= "Apellidos: " ...
  #1 (permalink)  
Antiguo 16/03/2010, 02:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
problema con las tildes y las ñ

buenas de nuevo.
Os cuento mi problema.
he creado un formulario de inscripción, y capturo la información de la siguiente manera:
$cuerpo .= "Apellidos: " .($_POST ["apellidos"]) . "\n";

y me llegan los datos a mi correo.
El problema es cuando el usuario introduce algún dato con tilde o con ñ.
Entonces a mi correo la información llega de la siguiente manera:
Apellidos: Sanz Garc?s
En vez de llegar así:
Apellidos: Sanz Garcés

A ver si me pueden ayudar, he estado mirando por internet pero no encuentro nada.
muchas gracias
  #2 (permalink)  
Antiguo 16/03/2010, 03:11
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: problema con las tildes y las ñ

Eso es por que no está bien codificado, o bien tu correo no tiene codificación española, o bien tu página. Por el ? diría que es el correo. Prueba a transformar las tildes y las eñes en sus entidades HTML como &aactue; o ñ.

Por allí hay una función que hace eso en este foro.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #3 (permalink)  
Antiguo 16/03/2010, 03:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

transformar las tildes y las eñes en sus entidades HTML como &aactue; o ñ.
ESto no lo puedo hacer pq
  #4 (permalink)  
Antiguo 16/03/2010, 03:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

transformar las tildes y las eñes en sus entidades HTML como &aactue; o ñ.
ESto no lo puedo hacer pq no es un texto que escribo yo, si no es información introducida por el usuario.
no hay otra forma?^??
gracias
  #5 (permalink)  
Antiguo 16/03/2010, 03:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con las tildes y las ñ

Cita:
Iniciado por gazaposa Ver Mensaje
transformar las tildes y las eñes en sus entidades HTML como &aactue; o ñ.
ESto no lo puedo hacer pq no es un texto que escribo yo, si no es información introducida por el usuario.
no hay otra forma?^??
gracias
no es necesario que lo hagas a mano...

existe una función que lo hace por ti: htmlentities()
http://php.net/htmlentities
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 16/03/2010, 03:58
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

buff he estado mirando el enlace que me has puesto y no entiendo ni papa!!!!
  #7 (permalink)  
Antiguo 16/03/2010, 04:07
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

Hola de nuevo, he probado a hacerlo con esto: htmlentities
de la sguiente manera:
$cuerpo .= "Apellidos: " .htmlentities(($_POST ["apellidos"])) . "\n";
Pero el resultado es:
Sanz Garcés
En vez de ser:
Sanz Garcés
Gracias por la ayuda
Hay alguna manera de conseguir lo que quiero???
muchas gacias
  #8 (permalink)  
Antiguo 16/03/2010, 04:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con las tildes y las ñ

Cita:
Iniciado por gazaposa Ver Mensaje
Hola de nuevo, he probado a hacerlo con esto: htmlentities
de la sguiente manera:
$cuerpo .= "Apellidos: " .htmlentities(($_POST ["apellidos"])) . "\n";
Pero el resultado es:
Sanz Garcés
En vez de ser:
Sanz Garcés
Gracias por la ayuda
Hay alguna manera de conseguir lo que quiero???
muchas gacias
pues si leyeras con atención, ese es el resultado de dicha función... osea que esta bien!!

ahora, para que las entidades HTML del email sean reconocidas debes enviarlo como HTML también... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 16/03/2010, 04:18
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

yo lo que quisiera saber es si existe alguna función como la anterior pero que hago lo que he dicho,
gracias
  #10 (permalink)  
Antiguo 16/03/2010, 04:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con las tildes y las ñ

Cita:
Iniciado por gazaposa Ver Mensaje
yo lo que quisiera saber es si existe alguna función como la anterior pero que hago lo que he dicho,
gracias
por favor amigo, es muy básico...

escribe en un archivo HTML o PHP sencillo esto
Cita:
Sanz Garcés
cárgalo con el navegador, y obviamente el resultado visual es
Cita:
Sanz Garcés
ahora, eso se debe a que es una entidad HTML... por lo tanto, si en tu correo no se ve correctamente es porque dicho correo no esta en formato HTML...

si corriges ese detalle al momento de enviar tu correo se solucionará!!

¿ves como es muy sencillo?? ;)


PDTA: la función ya la tienes, solo debes aplicarla coherentemente...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 16/03/2010, 04:47
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

ahora he hecho esto, pero me sigue sin funcionar:
$apellidos2=htmlentities(($_POST ["apellidos"])) ;
$cuerpo .= "Apellidos: " .$apellidos2 ."\n";
  #12 (permalink)  
Antiguo 16/03/2010, 04:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con las tildes y las ñ

Cita:
Iniciado por gazaposa Ver Mensaje
ahora he hecho esto, pero me sigue sin funcionar:
$apellidos2=htmlentities(($_POST ["apellidos"])) ;
$cuerpo .= "Apellidos: " .$apellidos2 ."\n";
es que es exactamente lo mismo, vamos... el resultado es igual...

repito, la solución además de usar htmlentities() está en enviar como HTML el email

¿si se entiende ahora??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 16/03/2010, 04:55
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

pero como lo envio como html???
tengo que usar PHP
  #14 (permalink)  
Antiguo 16/03/2010, 04:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con las tildes y las ñ

pues claro!!! en ningún momento dije que no usaras PHP...

si lees con calma el manual ahí vienen ejemplo de como enviar tu correo como HTML
http://php.net/mail

que bueno, no es difícil... una linea mas en los headers del correo y bingo!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 16/03/2010, 05:01
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

esto se me esta complicando ni papa de inglés
  #16 (permalink)  
Antiguo 16/03/2010, 05:10
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: problema con las tildes y las ñ

Dice que tienes que incluirle un header al correo tal que así:

$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n

y luego pasar el correo como HTML.

Si quieres usa esto:

http://anesgysd.byethost7.com/Clase-AMailer-PHP-.html

Puedes seguir enviándolo por MAIL de PHP y usar HTML sin tener que modificar headers ni cosas de esas (aunque te conviene aprendértelo).
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #17 (permalink)  
Antiguo 16/03/2010, 05:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

no me abre el enlace que me has pasado
pero tan dificil es esto!!!!!!!!!!!!!!!!
  #18 (permalink)  
Antiguo 16/03/2010, 05:45
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

Mirando por internet he visto esto, pero tambien me da error, el error me lo da en la línea:
$s = ereg_replace(”[áàâãª]”,”a”,$s);

El código es el siguiente:

<?php
}else{
function limpiar_acentos($s)
{
$s = ereg_replace(”[áàâãª]”,”a”,$s);
$s = ereg_replace(”[ÁÀÂÃ]”,”A”,$s);
$s = ereg_replace(”[ÍÌÎ]”,”I”,$s);
$s = ereg_replace(”[íìî]”,”i”,$s);
$s = ereg_replace(”[éèê]”,”e”,$s);
$s = ereg_replace(”[ÉÈÊ]”,”E”,$s);
$s = ereg_replace(”[óòôõº]”,”o”,$s);
$s = ereg_replace(”[ÓÒÔÕ]”,”O”,$s);
$s = ereg_replace(”[úùû]”,”u”,$s);
$s = ereg_replace(”[ÚÙÛ]”,”U”,$s);
$s = str_replace(”ç”,”c”,$s);
$s = str_replace(”Ç”,”C”,$s);
$s = str_replace(”[ñ]”,”n”,$s);
$s = str_replace(”[Ñ]”,”N”,$s);

return $s;
}

$cuerpo = "Formulario enviado\n";
limpiar_acentos($_POST ["apellidos"] )
$cuerpo .= "Apellidos: " $s . "\n";
  #19 (permalink)  
Antiguo 16/03/2010, 05:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con las tildes y las ñ

Cita:
Iniciado por gazaposa Ver Mensaje
Mirando por internet he visto esto, pero tambien me da error, el error me lo da en la línea:
$s = ereg_replace(”[áàâãª]”,”a”,$s);
será porque has copiado y pegado... ya que las comillas dobles de dicho script están mal...

pon atención y reflexiona... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #20 (permalink)  
Antiguo 16/03/2010, 05:56
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: problema con las tildes y las ñ

Las expresiones regulares empiezan por / y terminan por /, es decir donde tu pones:

"[áàâãª]" tienes que poner '/[áàâãª]/'.

Aunque yo suelo usar preg_replace, a lo mejor las reglas de patrones cambian de un a otro.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #21 (permalink)  
Antiguo 16/03/2010, 05:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

y esto tampoco me funciona:
<?php
}else{
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;
}
$cuerpo = "Formulario enviado\n";
limpieza($_POST ["apellidos"] )
$cuerpo .= "Apellidos: " . $cadena . "\n";
  #22 (permalink)  
Antiguo 16/03/2010, 06:01
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: problema con las tildes y las ñ

Prueba con esto:

Código PHP:
Ver original
  1. /$s = preg_replace("/[áàâãª]/","a",$s);
  2. $s = preg_replace("/[ÁÀÂÃ]/","A",$s);
  3. $s = preg_replace("/[ÍÌÎ]/","I",$s);
  4. $s = preg_replace("/[íìî]/","i",$s);
  5. $s = preg_replace("/[éèê]/","e",$s);
  6. $s = preg_replace("/[ÉÈÊ]/","E",$s);
  7. $s = preg_replace("/[óòôõº]/","o",$s);
  8. $s = preg_replace("/[ÓÒÔÕ]/","O",$s);
  9. $s = preg_replace("/[úùû]/","u",$s);
  10. $s = preg_replace("/[ÚÙÛ]/","U",$s);
  11. $s = str_replace("ç","c",$s);
  12. $s = str_replace("Ç","C",$s);
  13. $s = str_replace("/[ñ]/","n",$s);
  14. $s = str_replace("/[Ñ]/","N",$s);/
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #23 (permalink)  
Antiguo 16/03/2010, 06:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con las tildes y las ñ

Cita:
Iniciado por gazaposa Ver Mensaje
y esto tampoco me funciona:
<?php
}else{
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;
}
$cuerpo = "Formulario enviado\n";
limpieza($_POST ["apellidos"] )
$cuerpo .= "Apellidos: " . $cadena . "\n";
jeje... te complicas demasiado, y ni siquiera estas usando bien la función limpieza()

¿si sabes emplear funciones??
Código PHP:
$foo candy($bar); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #24 (permalink)  
Antiguo 16/03/2010, 06:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

mira mi codigo:
<?php
}else{
function limpiar_acentos($s)
{
/$s = preg_replace("/[áàâãª]/","a",$s);
$s = preg_replace("/[ÁÀÂÃ]/","A",$s);
$s = preg_replace("/[ÍÌÎ]/","I",$s);
$s = preg_replace("/[íìî]/","i",$s);
$s = preg_replace("/[éèê]/","e",$s);
$s = preg_replace("/[ÉÈÊ]/","E",$s);
$s = preg_replace("/[óòôõº]/","o",$s);
$s = preg_replace("/[ÓÒÔÕ]/","O",$s);
$s = preg_replace("/[úùû]/","u",$s);
$s = preg_replace("/[ÚÙÛ]/","U",$s);
$s = str_replace("ç","c",$s);
$s = str_replace("Ç","C",$s);
$s = str_replace("/[ñ]/","n",$s);
$s = str_replace("/[Ñ]/","N",$s);/

return $s;
}

$cuerpo = "Formulario enviado\n";
limpiar_acentos($_POST ["apellidos"] )
$cuerpo .= "Apellidos: " $s . "\n";

Me da otra vez error aqui:
/$s = preg_replace("/[áàâãª]/","a",$s);


Muchas gracias por vuestra ayuda
  #25 (permalink)  
Antiguo 17/03/2010, 03:22
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: problema con las tildes y las ñ

Hum... yo lo veo demasiado complicado para lo que quieres. En serio que no te vale convertir á en &aactue; y Á en &Aacute; y demás?
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #26 (permalink)  
Antiguo 17/03/2010, 03:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

cómo lo puedo hacer??!!!
he probado un monton de opciones y no me sale!!!

gracias
  #27 (permalink)  
Antiguo 18/03/2010, 02:04
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

Por fin lo he resuelto!!!!
no me lo puedo creer!!
lo he hecho de la siguiente forma, por si a alguien le puede servir
gracias a todos por vuestra ayuda

function cambio($cadenasus)
{
$cadenasus=str_replace("Ñ","N",$cadenasus);
$cadenasus=str_replace("ñ","n",$cadenasus);
$cadenasus=str_replace("á","a",$cadenasus);
$cadenasus=str_replace("é","e",$cadenasus);
$cadenasus=str_replace("í","i",$cadenasus);
$cadenasus=str_replace("ó","o",$cadenasus);
$cadenasus=str_replace("ú","u",$cadenasus);
$cadenasus=str_replace("Á","A",$cadenasus);
$cadenasus=str_replace("É","E",$cadenasus);
$cadenasus=str_replace("Í","I",$cadenasus);
$cadenasus=str_replace("Ó","O",$cadenasus);
$cadenasus=str_replace("Ú","U",$cadenasus);
return $cadenasus;

}
$apellidos=$_POST['apellidos'];

$cuerpo = "Formulario enviado\n";
$cuerpo .= "Apellidos: " . $resultado=cambio($apellidos). "\n";
$nombre=$_POST['nombre'];
$cuerpo .= "Nombre: " . $resultado=cambio($nombre). "\n";
$dni=$_POST['dni'];
$cuerpo .= "DNI: " . $resultado=cambio($dni). "\n";
$institucion=$_POST['institucion'];
$cuerpo .= "Institucion:" . $resultado=cambio($institucion) . "\n";
$direccion=$_POST['direccion'];
$cuerpo .= "Direccion: " . $resultado=cambio($direccion) . "\n";
  #28 (permalink)  
Antiguo 18/03/2010, 03:30
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: problema con las tildes y las ñ

Cita:
Hum... yo lo veo demasiado complicado para lo que quieres. En serio que no te vale convertir á en &aactue; y Á en &Aacute; y demás?
En serio no te vale? Yo solo digo por que es estándar HTML, y lo que has hecho un parche.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #29 (permalink)  
Antiguo 18/03/2010, 04:59
 
Fecha de Ingreso: noviembre-2009
Mensajes: 209
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con las tildes y las ñ

muchas gracias AnesGy, pero esto me funciona y no me quiero complicar mas, he estado mucho tiempo para solucionarlo.
gracias de todas formas
saludos

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