将字符串中的随机字母替换为相应的匹配字母

3

我想替换字符串中的一个或多个字母,使其与匹配的字母相对应,但希望替换是随机的。

$string = "This is random text in this string.";

以下是一些我要更改的字母示例 s = $,o = 0,i = l

我试图随机替换上面那个字符串中的字母,输出如下所示。它将完全随机,并且不需要更改所有字母,只需随机更改几个与上面的字母匹配的字母即可。

输出示例:

This is rand0m text in this $tring.

Thi$ is random text in this string.

请问我该如何在PHP中完成这项操作?


你尝试过什么?如何提问 - Geoff Atkins
可能只需要使用 str_replace 函数:http://php.net/manual/zh/function.str-replace.php - Mike
@Mike,我不想替换所有出现的内容。只是一些。 - TiMESPLiNTER
哪些?你如何决定?如果是随机的,那么多少个? - Mike
我在stackoverflow上找到了一些例子,但它们只是随机地用预设字母替换字母,而不是用匹配的字母替换它。如果选择的随机字母没有替换项,则可以忽略它并不进行替换。@TiMESPLiNTER是正确的。 - chillers
2个回答

1
什么样的东西呢?
$string = "This is random text in this string.";

$replace = array('s' => '$', 'o' => '0', 'i' => '1');
foreach(array_rand($replace, (count($replace)/2)+1) as $key) {
    $string = str_replace($key, $replace[$key], $string);
}

演示


获取到了 invalid argument supplied for foreach() 错误。 - chillers
抱歉,我无法理解您想要做什么。您能更好地解释一下吗? - Federkun
很高兴听到这个消息。如果您需要其他任何帮助,请随时提出。 - Federkun

1
无法比这更随机了。添加到数组 $a 的替换字符中。
$str = 'This is random text in this string.';
$str2 = '';

function repl($char){
    $arr = array(
        's' => '$',
        't' => 'T'
    );

    foreach($arr as $key=>$a){
        if($char == $key) return $a;
    }
    return $char;
}


foreach(str_split($str) as $char){
    if(!rand(0, 9))     $str2 .= repl($char);
    else                $str2 .= $char;

}

echo $str."\n";
echo $str2;

1
@chillers 你也可以通过调整rand(0,1)的值来改变随机性,正数将更改字符,负数将不更改字符,例如rand(-8,1)表示字符有90%的概率不被更改。 - mk_89
我尝试了-8,每次几乎都会改变所有字母。我甚至尝试了+数字,但似乎每次输出负载时都想要更改它们。 - chillers
现在运行得非常好。谢谢! - chillers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接