2013-12-09 114 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)。 –