用PHP中的第n个字母字符替换字符串字母
问题描述:
如何用字母中的+ n corespondent替换字符串中的字母?用PHP中的第n个字母字符替换字符串字母
例如,以其+4 corespondent如下替换每个字符:
a b c d e f g h i j k l m n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
e f g h i j k l m n o p q r s t u v w x y z a b c d
所以,如果我有串johnny
,它应该成为nslrrc
。
答
你可以做一个字符的字符替换为strtr()
:
$shiftBy = 4;
$alphabet = 'abcdefghijklmnopqrstuvwxyz';
$newAlpha = substr($alphabet, $shiftBy) . substr($alphabet, 0, $shiftBy);
echo strtr("johnny", $alphabet, $newAlpha);
// nslrrc
。当然,这是假设所有小写在你的榜样。首都使事情复杂化。
http://codepad.viper-7.com/qNLli2
奖励:还与负转变
答
<?php
$str="abcdefghijklmnopqrstuvwxyz";
$length=strlen($str);
$ret = "";
$n=5;
$n=$n-1;
for($i = 0, $l = strlen($str); $i < $l; ++$i)
{
$c = ord($str[$i]);
if (97 <= $c && $c < 123) {
$ret.= chr(($c + $n + 7) % 26 + 97);
} else if(65 <= $c && $c < 91) {
$ret.= chr(($c + $n + 13) % 26 + 65);
} else {
$ret.= $str[$i];
}
}
echo $ret;
?>
答
使字母的排列。对于数组[$ key]值中的每个字母,echo数组[$ key + 4]。如果$ key + 4大于数组的大小,则执行一些基本计算并转发它开始。
答
这是一个办法:
<?php
$newStr = "";
$str = "johnny";
define('DIFF', 4);
for($i=0; $i<strlen($str); $i++) {
$newStr .= chr((ord($str[$i])-97+DIFF)%26+97);
}
所以,你尝试过什么? – lanzz 2013-03-26 21:55:32
http://www.whathaveyoutried.com – 2013-03-26 21:55:50
13很简单[rot13()](http://php.net/manual/en/function.str-rot13.php)。 2013-03-26 21:59:13