2013-12-09 112 views
-1

所以我一直試圖讓這一點的代碼整天工作,並沒有能夠做到這一點...我想能夠代替字母與數字(或只是一個值)從一個數組。這是代碼我有:用數字替換字母

$l2n = 
    array(
      'a'=>'1', 
      'b'=>'2', 
      'c'=>'3', 
      'd'=>'4', 
      'e'=>'5', 
      'f'=>6, 
      'g'=>7, 
      'h'=>8, 
      'i'=>9, 
      'j'=>10, 
      'k'=>11, 
      'l'=>12, 
      'm'=>13, 
      'n'=>14, 
      'o'=>15, 
      'p'=>16, 
      'q'=>17, 
      'r'=>18, 
      's'=>19, 
      't'=>20, 
      'u'=>21, 
      'v'=>22, 
      'w'=>23, 
      'x'=>24, 
      'y'=>25, 
      'z'=>16 
      ); 
$string = str_split($string); 
$explode = array_shift($string); 
if($l2n[$explode] == $explode) 
{ 
    echo $l2n[$explode]; 
} 
else 
{ 
    echo $l2n['a']; 
} 

我試圖用的preg_replace,但我從來沒有與該功能良好的豁達。所以如果有人能幫助我,讓我朝着正確的方向發展,那會很棒。

+1

[東西真快:)(https://eval.in/private/ddd8e5eecb988b) – HamZa

回答

1

你可以簡單地做:

$string = preg_replace(array_keys($l2n), array_values($l2n), $string); 

the documentation

如果兩個模式和替代參數是數組,每個模式將被替換替代對手。

+0

謝謝你,成功了! –

0

爲什麼在這個世界上你會爲此使用一個數組?是不是ord()你在這裏找什麼?

$string = "ABCDE"; 

foreach (str_split($string) as $chr) { 
    echo ord($chr) - 64; // or 97 if they all are lowercase 
    echo PHP_EOL; 
} 
+1

我給出的數組只是我想要做的一個樣本,我正在使用密碼,並且不能使用任何其他方式計算值。因此我選擇了一個數組。 –

+0

夠公平的。然後與[scrowle的答案](http://stackoverflow.com/a/20460993/1697320)。 –