用数组值替换字符串中的字符

Jor*_*ata 2 php

我有以下数组

static public $tabla = array(
            'A'=>2, 'B'=>2, 'C'=>2,
            'D'=>3, 'E'=>3, 'F'=>3,
            'G'=>4, 'H'=>4, 'I'=>4,
            'J'=>5, 'K'=>5, 'L'=>5,
            'M'=>6, 'N'=>6, 'O'=>6,
            'P'=>7, 'Q'=>7, 'R'=>7,
            'S'=>8, 'T'=>8, 'U'=>8,
            'V'=>9, 'W'=>9, 'X'=>9,
            'Y'=>0, 'Z'=>0
            );
Run Code Online (Sandbox Code Playgroud)

和几个字符串组成的字母数字字符,例如:" G20513F4561B ".根据给定的数组,将字符串中的非数字字符替换为等效的最有效方法是什么?

我知道这可以使用循环轻松实现,但也许有某种正则表达式可以解决这个问题.

谢谢

lon*_*day 6

你可以很容易地做到这一点str_replace,它接受数组作为它的第一个和第二个参数:

echo str_replace(array_keys($tabla), array_values($tabla), $str);
Run Code Online (Sandbox Code Playgroud)

这将创建一个包含原始数组中所有键的数组,另一个包含所有值的数组.元素根据原始数组的顺序位于相应的位置.当str_replace使用数组参数调用时,第一个数组的第一个元素中的字符串将替换为第二个数组的第一个元素,依此类推.