Простой генератор правдоподобного текста. Набирает текст из заготовленных фраз.
<?php
class QB_Lipsum
{
public static function generator($num = 1)
{
$max = count(self::$paragraphs) - 1;
if ($num == 1)
return self::$paragraphs[rand(0, $max)];
$num = min($num, $max);
$already = array();
for ($text = '', $i=0; $i < $num; ++$i)
{
do {
$line = rand(0, $max);
} while (in_array($line, $already));
$already[] = $line;
$text .= self::$paragraphs[$line];
$r = rand(1,100);
$text .= ($r < 33) ? (($r < 10) ? "\n\n": "\n"): ' ';
}
return $text;
}
private static
$paragraphs = array(
'Aenean facilisis venenatis ipsum vel aliquet.',
'Aenean rhoncus malesuada auctor.',
'Cras sit amet magna sit amet felis eleifend lacinia.',
'Donec nec velit eget tellus adipiscing iaculis eu non lorem.',
'Donec ac tellus eu tellus dignissim blandit.',
'Donec diam dui, mollis venenatis lacinia ac, pretium id augue.',
'Donec lectus dolor, cursus eget facilisis id, ultrices ac mauris.',
'Duis sem quam, euismod ac rhoncus id, adipiscing sed sem.',
'Etiam sagittis tellus sapien.',
'In accumsan bibendum magna a egestas.',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'Maecenas tristique magna nulla, in fringilla purus.',
'Nulla eleifend velit faucibus eros rhoncus molestie.',
'Nulla pellentesque dolor at metus molestie ultrices nec vitae metus.',
'Pellentesque vel felis purus, ut dignissim erat.',
'Pellentesque quis purus nec odio aliquet bibendum ut vitae risus.',
'Phasellus sed felis vitae purus dictum fermentum.',
'Praesent ac tellus dui, in euismod leo.',
'Proin vulputate tincidunt erat id auctor.',
'Sed non justo enim.',
'Vestibulum imperdiet nunc id metus pellentesque eleifend.',
'Vivamus ultricies iaculis arcu, vitae bibendum tellus feugiat venenatis.',
);
}
В моем примере заготовки фраз — готовые псевдолатинские предложения, но можно забить его короткими словосочетаниями. Чем длиннее массив фраз и короче сами фразы, тем более "случайным" будет текст.
На таком коротком диапазоне значений повторы rand() очень даже возможны. Я не заморачивался всякими счетчиками и весами. Массив $already предохраняет от повторного включения предложения. Чтобы не нарваться на вечный цикл я тупо ограничиваю макс. кол-во.
Для большей правдоподобности есть еще случайная вставка line feed.
Пример использования: какбы симуляция какбы темы на форуме.
$id = $_GET['id'];
srand($id);
$subject = QB_Lipsum::generator(1);
$message = nl2br(QB_Lipsum::generator(rand(1, 20)));
Заголовок — одна строка, тело — несколько строк. srand($id) гарантирует повторяемость результата для заданного id темы.