$used=array();
$res=""; // результирующая строка
$fl=false;
for ($i=0;$i<strlen($str);$i++){
if (isvalidsymbol($str{$i}){
if (!$fl)$a="";
$fl=true;
$a+=$str{$i};
}else{
if ($fl){
if (array_key_exists($a, $used))$used[$a]++;
else $used[$a]=0;
if ($used[$a]<3){
$res+=$a;
}
}
$fl=false;
$res+=$str{$i};
}
}