我正在尝试找出一种方法来获取导入的字符串并用2个指定的字符替换每个字符,然后能够获取输出并通过另一个函数运行它以恢复原始字符串。
这是我想要做的转换的一个例子
@ A B C D E F G H I J K L M N O From
AF AE AD AC AB AA A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 To
! " # $ % & ' ( ) * + , - . / From
CF CE CD CC CB CA C9 C8 C7 C6 C5 C4 C3 C2 C1 C0 To
我认为这将是2个数组中的东西,其中to和from的顺序与此类似?
$before = array("A","B","C","D","E");
$after = array("AE","AD","AC","AB","AA");
echo someFunction("CAB"); // outputs "ACAEAD"
但我无法找出解决这个问题的最佳方法。最好的方法是什么?
答案 0 :(得分:2)
尝试这样:
按key=>value
制作array_combine()
对数组并使用strtr()
$before = array("A","B","C","D","E");
$after = array("AE","AD","AC","AB","AA");
$array = array_combine($before,$after); // make key value pairs array
echo someFunction($array,"CAB");
function someFunction($arr,$string) {
return strtr($string, $arr);
}
输出:ACAEAD
答案 1 :(得分:1)
您实际上可以将数组传递给str_replace
$someString = "abc";
$search = array('a','b','c');
$replace = array('ae','ad','ac');
$someString = str_replace($search, $replace, $someString);
答案 2 :(得分:1)
您可以使用strtr
。
$trans = array("A" => "AE","B" => "AD", "C"=>"AC","D"=>"AB","E"=>"AA");
echo strtr("CAB", $trans); // outputs "ACAEAD"
对于反向功能,只需array_flip
原始数组。
$trans2 = array_flip($trans);
echo strtr("ACAEAD", $trans); // outputs "CAB"