Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/01/2014, 13:52
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Sustituir una letra por una cadena (encriptacion propia)

Eres una víctima más de la trampa de str_replace. En el mismo manual oficial, explican sobre ello:

Cita:
Precaución: Trampa del orden de reemplazo

Debido a que str_replace() reemplaza de izquierda a derecha, podría sustituir a un valor previamente insertado al hacer sustituciones múltiples. Ver también los ejemplos de este documento.
Como los caracteres a buscar y de reemplazo están en arrays, se me ocurre buscar la letra ingresada en el array de búsqueda, obtengo la posición del elemento y con dicha posición, busco su reemplazo en el array de reemplazo, hago el reemplazo e imprimo. Para buscar la posición del elemento coincidente en el array, utilizaré la función array_search.

Código PHP:
Ver original
  1. function encriptar($var)
  2. {
  3.     $search  = array('E', 'D', 'C', 'B', 'A');
  4.     $replace = array('A1B', 'E', 'D', 'C', 'B');
  5.    
  6.     $pos = array_search($var, $search);
  7.     if ($pos !== FALSE)
  8.         $b = str_replace($search[$pos], $replace[$pos], $var);
  9.    
  10.     echo $b;
  11. }
  12.  
  13. encriptar('E');

Lo anterior producirá el siguiente resultado

Código HTML:
Ver original
  1. A1B

Así se ve en acción: http://ideone.com/oN9Szi

NOTA: Para hacer reemplazos de caracteres específicos en una palabra, tendrás que mejorar este algoritmo, porque así como está no te servirá.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 16/01/2014 a las 14:15