PHP拆分字符串输出随机插入数组

时间:2017-04-29 01:13:39

标签: php

我正在尝试找到随机拆分字符串的最佳方法。

示例:

$variable1 = "this_is_the_string_contents";

我想要实现的输出就是这个。

"is"
"this"
"ents"
"cont"
"_"
etc
etc

这样做的最佳方法是什么。我不知道什么PHP函数最适合我一直在寻找的东西,foreach(),rand()等。

2 个答案:

答案 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()为块大小生成随机数。根据您的尝试,可能需要考虑删除空格/下划线。