我有以下数组
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
);
由字母数字字符组成的几个字符串,例如:“ G20513F4561B ”。 根据给定的数组,将字符串中的非数字字符替换为等价的最有效方法是什么?
我知道这可以使用循环轻松实现,但也许有某种正则表达式可以解决问题。
由于
答案 0 :(得分:6)
您可以使用str_replace
轻松完成此操作,{{3}}接受数组作为其第一个和第二个参数:
echo str_replace(array_keys($tabla), array_values($tabla), $str);
这将创建一个包含原始数组中所有键的数组,另一个包含所有值的数组。元素根据原始数组的顺序位于相应的位置。当使用数组参数调用str_replace
时,第一个数组的第一个元素中的字符串将被第二个数组的第一个元素替换,依此类推。
答案 1 :(得分:2)
尝试strtr()
:
echo strtr($str, self::$tabla);
键将替换为相应的值。