用数字代替字母


replacing letters with numbers

所以我一直在尝试让这段代码工作一整天,但一直没能做到……我希望能够用数组中的数字(或只是值)替换字母。这是我得到的代码:

    $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,但我从来没有很好地体验过这个功能。所以,如果有人能帮我,给我一个正确的方向,那就太好了。

一旦使用了array_keysarray_values,就可以使用str_replace来获得阵列的每一边:

$keys = array_keys($l2n);
$values = array_values($l2n);
$yourstring = 'Hello world!';
echo str_replace($keys, $values, $yourstring);
// H5121215 231518124!

演示:https://eval.in/77453

文档

  • http://php.net/str_replace
  • http://php.net/array_keys
  • http://php.net/array_values

您可以简单地执行:

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

来自文件:

如果模式和替换参数都是数组,则每个模式都将被替换的对应参数替换。

为什么要使用数组?你在这里找的不是秩序吗?

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