我正在尝试找到随机拆分字符串的最佳方法。
示例:
$variable1 = "this_is_the_string_contents";
我想要实现的输出就是这个。
"is"
"this"
"ents"
"cont"
"_"
etc
etc
这样做的最佳方法是什么。我不知道什么PHP函数最适合我一直在寻找的东西,foreach(),rand()等。
答案 0 :(得分:3)
这会将字符串分解为随机长度子串的数组。
$l = strlen($variable1);
$i = 0; // holds the current string position
while ($i < $l) {
$r = rand(1, $l - $i); // get a random length for the next substring
$chunks[] = substr($variable1, $i, $r); // add the substring to the array
$i += $r; // increment $i by the substring length
}
这将是完全随机的,所以你最终可能会得到像
这样的数组["this_is_the_string_content","s"]
而不是您展示的更均匀分布的示例。如果你想避免这种情况,你可以&#34;去随机化&#34;随机长度部分。
if ($l - $i > $i) {
$r = rand(1, ($l - $i) / 2);
} else {
$r = rand(1, $l - $i);
}
这将阻止子串消耗超过一半的字符串,直到字符串的一半消失。
获得子串数组后,您也可以使用
随机化它shuffle($chunks);
答案 1 :(得分:1)
$str = "this_is_the_string_contents";
$stringPiece = str_split($str, 4); //put in whatever number here for chunk size
print_r($stringPiece);
如果您愿意,可以使用rand()为块大小生成随机数。根据您的尝试,可能需要考虑删除空格/下划线。