在測試數據生成、模糊匹配、壓力測試等場景下,需將字符串按隨機長度切分為數組。本文提供 RandomSplit($min, $max, $str) 函數,支援指定最小/最大切片長度。
function RandomSplit($min, $max, $str) {
$result = [];
while ($str !== '') {
// 隨機長度,不超過剩餘字符串長度
$len = rand($min, $max);
$len = ($len > strlen($str)) ? strlen($str) : $len;
$piece = substr($str, 0, $len);
$str = substr($str, $len);
$result[] = $piece;
}
return $result;
}
$test = 'This is a example to test the RandomSplit function.';
print_r(RandomSplit(1, 7, $test));
/* 可能輸出:
Array
(
[0] => This
[1] => is
[2] => a exam
[3] => ple to
[4] => test t
[5] => he
[6] =>
[7] => ran
[8] => d_spl
[9] => it f
[10] => un
[11] => ction.
)
*/
mb_substr、mb_strlen、mb_str_split(PHP 7.4+)。yield),節省大字符串記憶體。一個簡單函數,解決字符串隨機切分的通用需求。