datua » 2008.10.18 01:48

realno li delat takoi antispam? chto chelovek ne smog napisat takie "##########" ili ",,,,,,,,,," ili "aaaaaaaaaa". xochu chto v mesto "aaaaaaaaaa" ostalos 3 bukva "aaa", ili vmesto "........." ostalos "..."

Gemorroj » 2008.10.18 18:30

ммм... задачка...

Код:

1
span style="color: #0000BB"><?php// строка, которую надо отфильтровать$str = 'текстовый текст со словом аааааа. вот.';// кодировкаiconv_set_encoding('internal_encoding', 'UTF-8');$all = iconv_strlen($str);$out = ' '; // 3 пробелаfor($i=0; $i<$all; ++$i){ $tmp = iconv_substr($str, $i, 1); if($tmp != iconv_substr($out, -1, 1) || $tmp != iconv_substr($out, -2, 1) || $tmp != iconv_substr($out, -3, 1)){ $out.= $tmp; }}print $out = trim($out);?>

но есть проблемка, это очень медленный код. текстовый файл весом 3.5 кб, этот код обрабатывал чуть более 2 секунд.
вероятно можно попробовать разбивать текст по словам и прогонять цикл по словам, а не по каждому символу в отдельности.