Ainte


Генерация текста в PHP

В этой статье мы создадим небольшой генератор текста. Наша программа
будет при каждом посещении странички создавать новый текст. Этим можно
стимулировать более частое посещение вашего сайта без регулярных
обновлений.

Однако прошу вас не делать все надписи генерируемыми.
Согласитесь, не очень приятно когда все вокруг постоянно меняется.
Представьте, что вы делаете ссылку на сайт о выращивании огурцов, а посетителеям будет выдаваться хлам про помидоры(фанатов помидоров прошу не обижаться). Стремитесь к золотой середине.

Итак, ближе к делу:

Для любого генератора текста нужен отдельный файл данных. В нем мы
будем хранить кусочки слов (лингвисты их называют морфами). Файл
должен быть отделен от программы для облегчения добавления новых
записей.

Теперь перейдем к заполнению файла данных самими кусочками слов. Есть
два решения этой задачи:

1. Можно заполнять его автоматически. Этот вариант хоть и очень
привлекателен, но сложен в реализации. В рамках этой статьи он не
уместится.

2. Можно заполнять его из головы. Это простой, хотя и немного
утомительный вариант. На нем мы остановимся подробнее.

Создадим в каталоге нашей программы файл data.php следующего содержания:

<?
//окончания не храним т.к. они для всех одинаковые
$color = array('сер','зелен','черн','бел','красн','желт');
$animal = array('барсук','лис','слон','жираф','крокодил','морж','суслик');
//окончания здесь тоже повторяются
$dothing = array('учи','води','строи','храни','спаса');
?>

Как видим, в файле хранится три массива переменных. Эти массивы
после загрузки файла будут доступны в программе.

После того, как файл данных готов можно переходить непосредственно к построению шаблонов.

Например такого:

<color1>ый <animal1> учился <dothing1>ть, он мечтал стать профессиональным <dothing1>телем.
Его друг <animal2> считал, что быть <dothing1>телем в наше нелегкое время очень хорошо.

или такого:

<animal1> был <color1>ый до глубины души. Его <color1>ость была очень примечательной. А еще
он учился <dothing1>ть, он мечтал стать профессиональным <dothing1>телем как его друг <animal2>, который уже много лет <dothing1>л.

А теперь реализуем эти шаблоны непосредственно в программе.

<?
//реализация первого шаблона
//делаем отдельной функцией чтобы не перепутать с другим шаблоном.
function Blank1() {
include('data.php');//загрузили файл данных
//прелесть команды sizeof() заключается в том, что она выясняет размер массива
$cl1 = $color[rand(1, sizeof($color)-1)]; //цвет животного1
$cl2 = $color[rand(1, sizeof($color)-1)]; //цвет животного2
$an1 = $animal[rand(1, sizeof($animal)-1)]; //животное1
$an2 = $animal[rand(1, sizeof($animal)-1)]; //животное2
$ds = $dothing[rand(1, sizeof($dothing)-1)];//действие животного

//функция хоть ничего и не взяла, но вернуть - святое дело
return $cl1.'ый '.$an1.' учился '.$ds.'ть, он мечтал стать профессиональным '.$ds.'телем.
Его друг '.$cl2.'ый '.$an2.' считал, что быть '.$ds.'телем в наше нелегкое время очень
хорошо.';
}

//реализация второго шаблона
//его не комментирую - и так все ясно
function Blank2() {
include('data.php');
$cl1 = $color[rand(1, sizeof($color)-1)];
$cl2 = $color[rand(1, sizeof($color)-1)];
$an1 = $animal[rand(1, sizeof($animal)-1)];
$an2 = $animal[rand(1, sizeof($animal)-1)];
$ds = $dothing[rand(1, sizeof($dothing)-1)];

return $an1.' был '.$cl1.'ый до глубины души. Его '.$cl1.'ость была очень примечательной. А
еще он учился '.$ds.'ть, он мечтал стать профессиональным '.$ds.'телем как его друг
'.$an2.', который
уже много лет '.$ds.'л.';
}

//можно вывести пользователю любой шаблон
if (rand(0,1) == 0)
{echo Blank1();}
else
{echo Blank2();}
?>

Смотрим как работает: Генератор историй про зверей.

Если совместить более 10 таких шаблонов и расширить файл данных, то
посетители сайта могут даже не понять как создается текст. Особо
внимательные, впрочем, догадаются как и что делается, но для этого
потребуется много раз перезагрузить страничку. А для вас это все новые
и новые показы баннера :)))

Примеров таких программ уже не мало. Есть на JScript, но они не особенно
удачные. На PHP обычно получаются более удачные. Почему?
1. Технология написания программ для работы со строками в PHP значительно проще. А в простой программе меньше ошибок.
2. Когда вы пишете на JScript ваш код может взять любой посетитель и поместить к себе на сайт. И свое авторство вы не докажете, если предварительно не сходите и не получите патент на пару десятков строчек кода. А вот PHP-программа всегда у вас на сайте, «смотреть можно, а руками не трогать».

Мои программы вы можете посмотреть по адресу:
http://ainte.tora.ru/talkbox/.
Программы других авторов можно найти при помощи каталога генераторов текстов.

Надеюсь статья оказалась полезной для вас. Желаю удачи в использовании
информации.



Ainte.tora.ru 2003–2006; Ainte.ru 2008–2017