Foros del Web » Programando para Internet » PHP »

Acentos en input

Estas en el tema de Acentos en input en el foro de PHP en Foros del Web. Tengo un formulario que contiene un input type='text', un select, un textarea que reemplazado por el fckeditor y una serie de botones encargados de enviar ...
  #1 (permalink)  
Antiguo 02/04/2008, 06:44
 
Fecha de Ingreso: noviembre-2004
Mensajes: 92
Antigüedad: 19 años, 5 meses
Puntos: 0
Acentos en input

Tengo un formulario que contiene un input type='text', un select, un textarea que reemplazado por el fckeditor y una serie de botones encargados de enviar el formulario.

Los datos del formulario pasan por un javascript con codifica los parámetros con la función encodeuricomponente. El javascript monta un ajax y llama a un módulo php. Los parámetros los envio via POST.

Al llamar a la función encodeuricomponente veo que para el textarea los acentos llevan el &acute, pero el input no.

El php recupera los parámetros, pero a la hora de modificarlos en la bd correspondiente me mete carácteres extraños en el correspondiente al valor que devuelve el input, pero no así en el correspondiente al textarea.

Solo he conseguido insertarlo todo correctamente si uso la función utf8_decode contra todos los parámetros alfanuméricos, a lo cual no lo veo mucha lógica.

El HTML tiene el charset utf-8. La base de datos también.

¿Alguna idea de porque el input parece que no use utf-8?.
  #2 (permalink)  
Antiguo 02/04/2008, 08:12
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo Re: Acentos en input

Puedes hacer algo como lo siguiente:

Código PHP:
   $valor_input=$_POST["tu_input"];
   
$array_antiguos=array("Á""É","Í","Ó""Ú""... demas caracteres especiales");
   
$array_nuevos=array("Á""É","Í","Ó""Ú""... demas equivalentes de caracteres especiales");
   
$valor_input=str_replace($array_antiguos$array_nuevos$valor_input); 
ó para que te resulte mas reutilizable has lo siguiente:


Código PHP:
   function caracteres_especiales($cadena){
      
$array_antiguos=array("Á""É","Í","Ó""Ú""... demas caracteres especiales");
      
$array_nuevos=array("Á""É","Í","Ó""Ú""... demas equivalentes de caracteres especiales");
      return 
str_replace($array_antiguos$array_nuevos$valor_input);
   }
   
$valor_input=caracteres_especiales($_POST["tu_input"]); 
Es una sugerencia.

Pruebalo, depronto es lo que quieres.

Saludos.
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 23:56.