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 originalfunction encriptar($var)
{
$search = array('E', 'D', 'C', 'B', 'A'); $replace = array('A1B', 'E', 'D', 'C', 'B');
if ($pos !== FALSE)
echo $b;
}
encriptar('E');
Lo anterior producirá el siguiente resultado
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