3v4l.org

run code in 300+ PHP versions simultaneously
<?php $num = '7778855'; $mask = 'aabb'; $pattern = '/()?'; $arr = array(''); for($i=0;$i<strlen($mask);$i++) if(in_array($mask[$i] , $arr)) $pattern .= '\\'.array_search($mask[$i] , $arr); else {$pattern .= '([^\g{-1}])';$arr[] = $mask[$i];} $pattern .= '/'; var_dump($pattern); var_dump(preg_replace($pattern, '<$0>', $num));

preferences:
37.01 ms | 402 KiB | 5 Q