#### Php format string with pattern

I have a string (trimmed) and i would like to split this string according to a predefined pattern. I wrote a code which is probably more interpretive.

$string="123456789";$format=['XXX','XX','XXXX'];
$formatted=""; foreach ($format as $cluster){$formattedCluster=substr($string,0,strlen($cluster));
$string=substr($string,strlen($cluster));$formatted.=$formattedCluster.' '; }$formatted=substr($formatted, 0, -1); dd($formatted);
//outputs: "123 45 6789"


As you can see; it takes a string without any whitespace, and separates it with withspaces according to a pattern $format in this case. Pattern is a array. A pseudo example: $str='qweasdzxc'

$pattern=['X','X','XXXX','XXX'] $formatted='q w easd zxc'; //expected output

It works as expected but it is rather hideous. What is the correct solution to this problem ? By correctness, i mean speed and readability.

Thank you.

Env:
Php 7.4,
Laravel 8

Source: Laravel