Php将2个字符替换为另外2个随机字符


Php replace 2 characters with 2 other random ones

我想将字符串中的两个字符与另外两个字符交换。

Start string = " ' bHello ' ! "你好吗?"

随机字符串= "1234567890abcdefghijklmnopqrstuvwxyz!£$%^&@"

我如何交换' b ' !' Q ' %和随机值,所以它看起来像这样

End result string = " ' 4Hello ' ^how ' $are ' @you."

我已经试过了

I tried so far

$out = " ' vHow ' !是"@you。"

$模式=阵列("1"、"J"、"2"、"3"、"4"、"5"、"6"、"7 ","`!","`$","`%","`^","`& amp ;","`)","`~","`#","`@","` 问","e"、"y"、"‘t"、"p"、"‘j"、"k"、"l"、"米"、"‘x"、"v"、"‘M"、"问"、"‘e"、"R"、"‘t"、"y"、"p"、"G"、"k"、"l"、"x"、"v");

$预备考试=阵列("1"、"J"、"2"、"3"、"4"、"5"、"6"、"7 ","`!","`$","`%","`^","`& amp ;","`)","`~","`#","`@","` 问","e"、"y"、"‘t"、"p"、"‘j"、"k"、"l"、"米"、"‘x"、"v"、"‘M"、"问"、"‘e"、"R"、"‘t"、"y"、"p"、"G"、"k"、"l"、"x"、"v");

tempstr =美元进行预测(兰德(0,strlen(进行预测美元)1)],

$substs = " ' ' .$tempstr;

$ = preg_replace(模式、路径替换美元,美元);

然而最终的结果是

$out = " %How ' %are ' %you."

它只随机选择1个并将它们全部更改为那个

<?php
function randomChar() { 
    $rand = "1234567890abcdefghijklmnopqrstuvwxyz";
    return substr($rand, rand(0, strlen($rand)), 1);  
} 
echo preg_replace_callback("/`./", 'randomChar', "`bHello `!how `Qare `%you.");