Удалить все повторяющиеся символы:
$string = 'test----test---3';
echo preg_replace('{(.)\1+}','$1',$string);
Удалить определенный повторяющийся символ:
$string = 'test----test---3';
echo eregi_replace("-{2,}", "-", $string);
Удалить определенный повторяющийся символ «безобразным» способом:
$string = 'test----test---3';
echo implode('-',array_filter(explode('-',$string)));
Результат для всех фрагментов:
test-test-3