我想争抢所有a-zA-Z 一个世界 像
您好 变 shrxs 要么 bhidf
其余的应该保持不变。 例如。 “你好世界!”=“ksgii fishl!”
等
答案 0 :(得分:11)
目前尚不清楚这是否可以逆转,所以这里有两个备选答案。
“你好”成为“shrxs”意味着一种超越简单替换(a caesar cipher)的方案,可能类似于多字母密码。
但是对于一个简单的凯撒密码,你可以使用strtr
$plain="hello";
$cipher = strtr($plain,
"abcdefghijklmnopqrstuvwxyz",
"tuvhijkcwxyzldefgsmnopqrab");
echo $cipher;
会显示“cizze”;
如果你不需要反转加扰,并想要一些真正随机的东西,试试这个
function random_char($matches)
{
return chr(rand(ord('a'),ord('z')));
}
$plain="hello";
$random=preg_replace_callback(
"{[a-z]}i",
"random_char",
$plain);
echo $random;
这里我们使用preg_replace_callback将每个char替换为random_char回调的随机替代。
答案 1 :(得分:5)
您可能还想查看str_rot13函数,它具有可逆性的优势。
<?php
var $foo = "hello world!";
var $bar = str_rot13($foo); // $bar equals "uryyb jbeyq!"
var $baz = str_rot13($bar); // $baz equals "hello world!"
?>
答案 2 :(得分:1)
你到底是什么意思?我可以看到你没有通过字母表重新排列或计算字母。
听起来你只想知道如何更换a-zA-Z字符。因此无论您的转换功能如何,这都是您可以做到的一种方式:
$result = preg_replace_callback('/[a-zA-Z]/', 'charTransform', $oldstring);
然后将变换定义为回调:
function charTransform($matches) {
$oldchar = $matches[0];
return strtolower($oldchar); // replace with whatever you want
}
答案 3 :(得分:1)
问题是,您希望文本加密或加密,即文本是否可以解密?如果您只是想用其他随机字母替换所有字母,您可以尝试这样的事情:
$text = "Hello world!\n";
$text = preg_replace_callback(
'/[a-zA-Z]/',
create_function('$matches', 'return chr(rand(97,122));'),
$text
);