- var_dump: documentation ( source)
- array_search: documentation ( source)
- in_array: documentation ( source)
- preg_replace: documentation ( source)
<?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));