Php 在字符串中的每个字符后洗牌新字符
我使用以下函数在字符串的开头和结尾生成一个新的随机字符:Php 在字符串中的每个字符后洗牌新字符,php,string,split,shuffle,Php,String,Split,Shuffle,我使用以下函数在字符串的开头和结尾生成一个新的随机字符: function random($string) { $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $shuffle_start = substr(str_shuffle($chars), 0, 6); $shuffle_end = substr(str_shuffle($chars), 0, 6);
function random($string) {
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$shuffle_start = substr(str_shuffle($chars), 0, 6);
$shuffle_end = substr(str_shuffle($chars), 0, 6);
$str = chunk_split($string, 1, substr(str_shuffle($chars), 0, 5));
return $shuffle_start . $str . $shuffle_end;
}
正如您所看到的,$str
我试图在字符串中的每个字母后获得5个随机字符,我需要一些帮助。现在,此函数将打印以下内容:
dYj9quhDk2T4eDk2T4lDk2T4lDk2T4oDk2T4KHjN6T
字符串为“hello”,在字符串的开头和结尾由6个随机字符覆盖(dYj9qu
和KHjN6T
)。在这个字符串中的每个字符之后,您可以看到Dk2T4
,它在每个字符之后重复返回。这不是我想要的!我希望Dk2T4
是随机的,因此字符串如下所示:
dYj9quhDk2T4eTft3bl7yjF4lac34vodkiY0KHjN6T
我还希望从字符串中删除字符串的最后一个字符(“hello”-在本例中为最后一个字符串中的dkiY0
),因此看起来如下所示:
dYj9quhDk2T4eTft3bl7yjF4lac34voKHjN6T
如何解决此问题?之所以发生这种情况,是因为
块分割
只对子序列(str\u shuffle($chars),0,5)进行一次计算。您需要迭代字母并为每个字母生成序列:
function random($string) {
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$shuffle_start = substr(str_shuffle($chars), 0, 6);
$shuffle_end = substr(str_shuffle($chars), 0, 6);
$letters = str_split($string);
$str = '';
$count = count($letters);
foreach($letters as $l){
$count--;
$str .= $l;
if($count){ // add 5 characters if not last letter
$str .= substr(str_shuffle($chars), 0, 5);
}
}
return $shuffle_start . $str . $shuffle_end;
}
这解决了洗牌问题:)非常感谢!但我如何删除问题中描述的最后5个字符?@ErikEdgren更新。现在不追加最后5个字符。