所以我一直在尝试让这段代码工作一整天,但一直没能做到……我希望能够用数组中的数字(或只是值)替换字母。这是我得到的代码:
$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_keys
和array_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;
}