it is not completely clear to me what you want, but:
if x can be anything but a number, it is fairly easy:
$str="xxxx111xxx111xxxx111xxxx222xxx222xxxxxx222xxxxx333xx333xxxxx333xxxxxx";
$array=preg_split("/111\D+(?!111)222/", $str);
this would split at 111xxxx222
we can even make it more general if you don't know the specific numbers and just want to split when they change:
$array=preg_split("/(\d+)\D+(?!\1)\d+/", $str);
this would split at 111xxxx222 and 222xxxxx333
if x can be numbers at well, you'd obviously need to know at which numbers you would like to split at, you could use:
$array=preg_split("/111(\D+|(?!111|222)\d+)+222/", $str);
this would split at 111xxxx222 again, even if any of the x was a number.
Hope this helps,
xblue