寻找一种方法来取一个字符串并用两个符号替换每一个符号然后再返回

时间:2014-03-01 04:12:20

标签: php data-manipulation

我正在尝试找出一种方法来获取导入的字符串并用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"

但我无法找出解决这个问题的最佳方法。最好的方法是什么?

3 个答案:

答案 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

demo

答案 1 :(得分:1)

您实际上可以将数组传递给str_replace

$someString = "abc";
$search = array('a','b','c');
$replace = array('ae','ad','ac');
$someString = str_replace($search, $replace, $someString);

修改 https://eval.in/107493

答案 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"