Nickolay.info. PHP. Статьи. PHP - простейшая генерация вариативного текста или Пушкинист

В момент написания этого маленького скрипта мне просто нужен был пример простейшей генерации вариативного текста по паттерну, не такого, как в этом моём скрипте, а попроще, чтоб парой строчек. То есть, варианты каждого слова или словосочетания - в массив, весь текст - массив этих массивов, а дальше один цикл и одна функция rand для выбора очередного случайного "узла" текста... и, в общем, всё. Но как-то сами пришли в голову пушкинские строки для примера. Наверное, вариативность у них очень высокая :)

Получилось вот что:

Не одним же Синявским глумиться над великим поэтом, тем более, в отличие от них, мне-то Пушкин соотечественник.

Вот код скрипта (с точностью до вариантов слов, их, конечно же, можно добавить):

<?php
setlocale(LC_ALL, 'ru_RU.CP1251');
$pattern = array (
 array ('Я помню','Не помню','Забыть бы','О ком ты','Купите','Очкуешь,','Какое','Угробил','Фигово','Открою',
  'Ты чуешь'),
 array ('чудное','странное','некое','вкусное','пьяное','сытное','свинское','чёткое','сраное','нужное',
  'конское','вялое','каждое','скотское','мутное'),
 array ('мгновенье','затменье','хотенье','варенье','везенье','творенье','рожденье','смущенье','печенье',
  'ученье','мученье'),
 array ('Передо мной','Под косячком','На кладбище','В моих мечтах','Под скальпелем','В моих штанах',
  'Из-за угла','В моих ушах','В ночном горшке','Из головы','На каблуках'),
 array ('явилась ты','добилась ты','родилась ты','торчат кресты','растут листы','дают п**ды','поют дрозды',
  'стихов листы','забилась ты','мои трусы','из темноты','помылась ты','разделась ты','побрилась ты'),
 array ('Как'),
 array ('мимолётное','детородное','психотропное','кайфоломное','очевидное','у воробушков','вот такое вот',
  'нам не чуждое','благородное','ненародное','инородное'),
 array ('виденье','сиденье','паренье','сужденье','вращенье','сношенье','смятенье','теченье',
  'паденье','сплетенье','печенье','леченье'),
 array ('Как'),
 array ('гений','веник','сторож','символ','спарта','правда','ангел','водка','пиво','ахтунг','жопа','чудо','дятел'),
 array ('чистой','вечной','тухлой','просит','грязной','липкой','в пене','на фиг','женской','жаждет','хочет'),
 array ('красоты','мерзлоты','суеты','наркоты','школоты','срамоты','типа ты','простоты','куеты','наготы','немоты')
);
 
//Выше - данные, а весь скрипт вот:
$verce='<p>';
for ($i=0; $i<count($pattern); $i++) {
 $word=$pattern[$i][rand(0,count($pattern[$i])-1)];
 if (ucfirst($word)==$word and $i>0) $verce.='<br>';
 $verce.=$word.' ';
}
echo $verce.'</p>';
?>

Что с большой буквы - становится новой строкой ( в коде добавляется <br>). В начале ставится локаль кириллической Windows, чтоб корректно работала функция ucfirst.

Вот код для вызова скрипта:

<div><iframe width="300" height="150" hspace="4" vspace="4" 
 src="http://scripts.kislenko.net/pushkinist/pushkinist.php">
 Извините, плавающие фреймы недоступны в Вашем браузере
</iframe></div>

Ну или если с кнопкой "ещё", то

<div><iframe width="400" height="250" hspace="4" vspace="4" 
 src="http://scripts.kislenko.net/pushkinist/index.html">
 Извините, плавающие фреймы недоступны в Вашем браузере
</iframe></div>

Внесите свои данные - и получите свой текст.

Для кодировки Юникода utf-8 цикл обработки изменится на

for ($i=0; $i<count($pattern); $i++) {
 $word=$pattern[$i][rand(0,count($pattern[$i])-1)];
 $chr = mb_substr ($word, 0, 1, 'utf-8');
 if( mb_strtolower($chr, 'utf-8') != $chr and $i>0) $verce.='<br>';
 $verce.=$word.' ';
}

 Скачать пример в архиве ZIP (2 Кб)

Рейтинг@Mail.ru

вверх гостевая; E-mail