Как разбить строку на массив с повторением?
Очевидно же, что нужно делать конкатенацию каждого текущего элемента с предыдущим. $str = 'test.tests.testst.tesrtcefdg.teestcvxv';
$arr = explode('.', $str);
for ($i=1; $i<count($arr); $i++) {
    $arr[$i] = $arr[$i-1].'.'.$arr[$i];
}
Можно рекурсивно запилить, если разнообразия в жизни не хватает. Но в PHP это недостаточно компактно выходит:$str = 'test.tests.testst.tesrtcefdg.teestcvxv';

function toArray($str, $arr=[]) {
    $pos = strripos($str, '.');
    if ($pos === False) {
        array_unshift($arr, $str);
        return $arr;
    } 
    array_unshift($arr, $str);
    return toArray(substr($str, 0, $pos), $arr);
}

print_r(toArray($str));
Первое что пришло в голову.
Внимание! не тестировал.function myExplode($str, $divider) {
    $strs = explode($divider, $str);

    for($i=1 ; $i<count($strs) ;  $i++) {
        $strs[$i] = $strs[$i-1].$divider.$strs[$i];
    }

    return $arr;
}

$s = "test.tests.testst.tesrtcefdg.teestcvxv";
$a = myExplode($s, ".");