用数字代替字母

时间:2013-12-09 00:10:29

标签: php

所以我一直试图让这些代码全天工作,并且无法做到这一点......我希望能够用一个数字替换字母(或者只是一个值来自数组。这是我得到的代码:

    $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,但我从来没有对该功能进行过良好的尝试。所以,如果有人能帮助我,那就提示我正确的方向,那就太棒了。

3 个答案:

答案 0 :(得分:2)

您可以在使用str_replacearray_keys后使用array_values来获取数组的每一面:

$keys = array_keys($l2n);
$values = array_values($l2n);

$yourstring = 'Hello world!';

echo str_replace($keys, $values, $yourstring);

// H5121215 231518124!

演示https://eval.in/77453

文档

答案 1 :(得分:1)

您可以这样做:

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

来自the documentation

  

如果模式和替换参数都是数组,则每个模式将替换为替换模式。

答案 2 :(得分:0)

为什么世界上会使用数组呢?不是ord()你在寻找什么?

$string = "ABCDE";

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