Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/02/2012, 12:03
manolo_manolo
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 18 años
Puntos: 9
Convertir funcion JavaScript a funcion PHP

Hola gente, llevo ya un par de días intentando convertir una función de JavaScript a una función PHP, su función es la de decodificar una cadena de caracteres sin sentido por una legible con las coincidencias de posición de las letras de orig y dest.

Función JavaScript:
Código:
function decodem(txt){
	var orig="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_-.@";
	var dest="bcqNdghT1YUV2Xi9jaQklm0LpJDr@stKuv6734wx_yzABCE.FGHMnIOPRSefWZ58-o";
	var out="";
	if(txt!=""){
		for(i=0;i<txt.length;i++){
			ind=orig.indexOf(txt.substring(i,i+1));
			if(ind!=-1) out+=dest.substring(ind,ind+1);
			else out+=txt.substring(i,i+1);
		}
	}
	return out;
}
Esta es la función de PHP que he conseguido estar más cerca:
Código PHP:
$encontrar =array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '@', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', '.', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '_', '-');
$reemplazar=array('b', 'c', 'q', 'N', 'd', 'g', 'h', 'T', '1', 'Y', 'U', 'V', '2', 'X', 'i', 'o', '9', 'j', 'a', 'Q', 'k', 'l', 'm', '0', 'L', 'p', 'J', 'D', 'r', '@', 's', 't', 'K', 'u', 'v', '6', '7', '3', '4', 'w', 'x', '_', 'y', 'z', 'A', 'B', 'C', 'E', '-', '.', 'F', 'G', 'H', 'M', 'n', 'I', 'O', 'P', 'R', 'S', 'e', 'f', 'W', 'Z', '5', '8');
$tag_url=str_replace($encontrar, $reemplazar, $texto);
echo 
$tag_url; 
Funciona casi bien, cuando encuentra un caracter en la cadena, lo sustituye por la letra que hay en su misma posición en $reemplazar.
El problema es que una vez sustituye una letra, si en el resto del array $encontrar vuelve a estar la letra sustituida la vuelve a sustituir. Por ejemplo con la letra "a", la sustituye por "b" correctamente, pero como la siguiente en el array es la "b" ésta la vuelve a sustituir por la "c". Lo que quiero es que se sustituya una sóla vez. Alguien puede ayudarme?? Mil gracias!!!!!!