PHP - Precisa remover caracteres duplicados em uma String, mas gostaria de incluir exceções

Eu tenho procurado por toda a internet para uma solução, mas não consegui encontrar um.

Eu preciso remover caracteres duplicados dentro de uma String, mas também gostaria de incluir uma exceção para permitir que uma quantidade inteira de caracteres repita / permaneça na string.

Por exemplo, tentei o seguinte:

$str = 'This ----------is******** a bbbb 999-999-9999 ******** 8888888888 test 4444444444 ********##########Sammy!!!!!! ###### hello !!!!!!';

$t1 = preg_replace('/(.)\1{3,}/','',$str);
$t2 = preg_replace('/(\S)\1{3,}/','',$str);
$t3 = preg_replace('{(.)\1+}','$1',$str);
$t4 = preg_replace("/[;,:\s]+/",',',$str);
$t5 = preg_replace('/\W/', '', $str);
$t6 = preg_replace( "/[^a-z]/i", "", $str);

echo '$t1 = '.$t1.'<br>';
echo '$t2 = '.$t2.'<br>';
echo '$t3 = '.$t3.'<br>';
echo '$t4 = '.$t4.'<br>';
echo '$t5 = '.$t5.'<br>';
echo '$t6 = '.$t6.'<br>';

Resultados:

$t1 = This is a 999-999- test Sammy hello 
$t2 = This is a 999-999- test Sammy hello 
$t3 = This -is* a b 9-9-9 * 8 test 4 *#Samy! # helo !
$t4 = This,----------is********,a,bbbb,999-999-9999,********,8888888888,test,4444444444,********##########Sammy!!!!!!,######,hello,!!!!!!
$t5 = Thisisabbbb99999999998888888888test4444444444Sammyhello
$t6 = ThisisabbbbtestSammyhello

A saída desejada seria:

This ---is*** a bbbb 999-999-9999 *** 8888888888 test 4444444444 ***###Sammy!!! ### hello !!!

Como você pode ver, odesejado saída deixa os números sozinhos e só deixa 3 caracteres repetidos, ou seja, --- ###* !!!

Eu gostaria de poder alterar as exceções de 3 para qualquer outro inteiro, se possível.

Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion