PHP 如何将字母'A'替换为字母'A'不会消失的空格,数组到字符串?

  • 本文关键字:空格 数组 消失 字符串 替换 PHP php
  • 更新时间 :
  • 英文 :


我用公式计算了模数学:3*n mod 26

通过对数组[n]A-Z进行加密以进行数字转换,从预定数组的结果中获得数字的结果,然后将计算结果转换回字符串。

示例:我的名字是CARL>KU NAKM YC GAZH

K=10,U=20,N=13,A=0,K=10,M=12

Y=24,C=2,G=6,A=0,Z=25,H=7

我已经设法将数字转换成字符串,并得到一个结果:KUANAKMAYCAGAZH

我想问的是如何通过替换空格来删除"A",因此结果是:"KU NAKM YC GAZH"而不是"KUANAKMAYCAGAZH">

对不起,我的英语不好。

下面是我的脚本:

<?php
$text = 'MY NAME IS CARL';
$str = '';
$key = array(
"A" => 0, "B" => 1,"C" => 2, "D" => 3,"E" => 4,"F" => 5,
"G" => 6, "H" => 7, "I" => 8, "J" => 9, "K" => 10,
"L" => 11, "M" => 12, "N" => 13, "O" => 14,
"P" => 15, "Q" => 16, "R" => 17, "S" => 18,"T" => 19,
"U" => 20, "V" => 21, "W" => 22, "X" => 23,
"Y" => 24, "Z" => 25
);
for ($i = 0; $i < strlen($text); $i++) {
$number = (3*$key[strtoupper($text[$i])])%26; // math caesar cipher 3 * n modulo 26
$str .= array_search($number, $key);
}
echo $str;
?>

此时,您在尝试查找数组中的空格时会遇到错误,您会收到一条消息,上面写着。。。

PHP注意:未定义的索引:在…

如果您打开了错误报告。

要解决此问题,您可以在尝试对其进行编码之前检查该字符是否存在于数组中,否则只需复制该字符。。。

for ($i = 0; $i < strlen($text); $i++) {
if ( isset($key[strtoupper($text[$i])]) ) {
$number = (3*$key[strtoupper($text[$i])])%26; // math caesar cipher 3 * n modulo 26
$str .= array_search($number, $key);
}
else {
$str .= $text[$i];
}
}

您可以使用内置的ordchr函数来创建一个转换函数:

function translate_char($c) {
$o = ord($c);
if (in_array($c, range('A', 'Z'))) {
return chr((($o - 65) * 3 % 26) + 65);
}    
elseif (in_array($c, range('a', 'z'))) {
return chr((($o - 97) * 3 % 26) + 97);
}
else {
return $c;
}
}

此函数还处理小写字母字符;如果不需要,只需删除elseif子句。任何非字母字符都将原封不动地返回。

然后,您可以使用array_map将此函数应用于$text:中的所有字符

$text = 'My name is Carl';
$str = implode('', array_map('translate_char', str_split($text)));
echo $str;

输出:

Ku nakm yc Gazh

3v4l.org 上的演示

最新更新