2012-10-03 62 views
2

替換字符串字符我有以下陣列與數組值

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

我想你已經寫了一個正則表達式來做你想做的事情。用這個代替這個,用這個代替這個... – John

回答

2

嘗試strtr()

echo strtr($str, self::$tabla); 

鍵將其相應的值來替換。

+0

謝謝你做的伎倆 –

6

可以做到這一點很容易與str_replace,它接受數組作爲它的第一個和第二個參數:

echo str_replace(array_keys($tabla), array_values($tabla), $str); 

這將創建包含從原始陣列的所有鍵一個陣列和另一種含所有的價值。元素根據原始數組的順序處於相應的位置。當使用數組參數調用str_replace時,第一個數組的第一個元素中的字符串將被第二個數組的第一個元素替換,依此類推。