Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/04/2011, 07:54
Avatar de junihh
junihh
 
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Codificar los acentos a sus entidades HTML con expresiones regulares

Hola señores

A través de ajax paso valores a la base de datos de ciertos campos que los usuarios rellenan. El caso es que necesitaba convertir los acentos de dichos campos a sus entidades en HTML ("á", "ñ", etc.) y luego de buscar un poco, preparé dos funciones para hacer el encode y decode basándome en expresiones regulares.

Me gustó mucho esa alternativa, por su rapidez y el mínimo uso de recursos del navegador. Estas son las funciones que ahora tengo:

Código HTML:
var accentEncode = function (tx)
{
	var rp = String(tx);
	//
	rp = rp.replace(/á/g, 'á');
	rp = rp.replace(/é/g, 'é');
	rp = rp.replace(/í/g, 'í');
	rp = rp.replace(/ó/g, 'ó');
	rp = rp.replace(/ú/g, 'ú');
	rp = rp.replace(/ñ/g, 'ñ');
	rp = rp.replace(/ü/g, 'ü');
	//
	rp = rp.replace(/Á/g, 'Á');
	rp = rp.replace(/É/g, 'É');
	rp = rp.replace(/Í/g, 'Í');
	rp = rp.replace(/Ó/g, 'Ó');
	rp = rp.replace(/Ú/g, 'Ú');
	rp = rp.replace(/Ñ/g, 'Ñ');
	rp = rp.replace(/Ü/g, 'Ü');
	//
	return rp;
};

var accentDecode = function (tx)
{
	var rp = String(tx);
	//
	rp = rp.replace(/á/g, 'á');
	rp = rp.replace(/é/g, 'é');
	rp = rp.replace(/í/g, 'í');
	rp = rp.replace(/ó/g, 'ó');
	rp = rp.replace(/ú/g, 'ú');
	rp = rp.replace(/ñ/g, 'ñ');
	rp = rp.replace(/ü/g, 'ü');
	//
	rp = rp.replace(/Á/g, 'Á');
	rp = rp.replace(/É/g, 'É');
	rp = rp.replace(/Í/g, 'Í');
	rp = rp.replace(/Ó/g, 'Ó');
	rp = rp.replace(/Ú/g, 'Ú');
	rp = rp.replace(/&Ñtilde;/g, 'Ñ');
	rp = rp.replace(/&Üuml;/g, 'Ü');
	//
	return rp;
};
Ambas funciones hacen el trabajo que deben, pero mi pregunta es si existe una forma también con expresiones regulares para evitar hacer tantos replace por cada carácter. Pensé en usar "for" o "while" guardando los carácteres en arrays, pero toma recursos del navegador que precisamente quiero evitar. ¿Alguna sugerencia?

Gracias de antemano a cualquier idea o ayuda que me puedan facilitar.
__________________
JuniHH
- Mi blog
- Mi portafolio