// Прочитать исходный текст, на основе которого будет генерироваться новый $str=file_get_contents('markov.txt'); // Установить кодировку системы setlocale(LC_ALL, 'ru_RU.CP1251'); // Убрать из текста символы кроме цифр, букв и некоторых знаков препинания $str=eregi_replace('[^-a-zа-я0-9 !\?\.\,]',' ',$str); // Подчистить пробелы перед окончаниями предложений $str=eregi_replace(' {1,}([!\?\.\,])','\\1',$str); // Поделить текст на слова $tmp=preg_split('/[[:space:]]+/is',$str); // Массив "звеньев" $words=Array(); // Заполнить звенья for($i=0; $i$links) { if (ereg('^[А-Я][а-я]+',$word)) { $start[]=$word; } } // Сгененировать 100 предложений на основе исходного текста for ($i=0; $i<100; $i++) { while (true) { $w=$start[rand(0,(count($start)-1))]; if (ereg('[\.!\?]$',$w)) { continue; } $sentence=$w.' '; // Количество слов в предложении $cnt=1; // Сгенерировать предложение while(true) { $links=$words[$w]; // Переключить цепочку $w=$words[$w][rand(0,(count($words[$w])-1))]; $sentence.=$w.' '; // Если слово находилось в конце предложения if (ereg('[\.!\?]$',$w)) { break; } $cnt++; // Если генератор зациклился, то принудительно выйти if ($cnt>19) { break; } } // Удачным считать предложение длиной 5-20 слов if ($cnt>5 && $cnt<20) { break; } } // Сгенерированное предложение echo $sentence; }