public function clean($str)
{
if (is_array($str)) {
while (list($key) = each($str)) {
$str[$key] = $this->clean($str[$key]);
}
return $str;
}
$i = 0;
do {
++$i;
$processed = $this->process($str);
} while ($i < 3 && $processed !== $str);
return $processed;
}