Размножение статьи силами PHP
Всем привет! Сегодня я хочу вам поведать “тайну”, как сделать скрипт который будет размножать статью из оригинала. Этот скрипт я искал в сети, но так и не смог найти, а он мне требовался при своих разработках.
Размножение статьи будет происходить следующим образом:
- В тексте статьи пишутся наборы слов в формате: {слово1|слово2…} .
- Регулярное выражение проверяет текст на вхождение наборов слов.
- Если наборы найдены, то они помещаются в один массив.
- С помощью цикла for, проходимся по массиву и заменяем слова.
- Слова заменяются рандомно для каждого набора слов.
Пункт – 1.
Например, есть у нас текст вот такого содержания:
В настоящее время с весьма быстрым развитием науки и техники, основную задачу выполняют знания и информация. Именно образование закладывает в человека знания и информацию.
Чтобы его размножить, мы перепишем его, используя наборы слов:
{В настоящее время|Сегодня|Сейчас} с {очень|весьма|крайне} {cкорым|быстрым|борзым|живым} {развитием|онтгенезом|онтогонией} {науки|доктрины|учения} и {техники|техучебы|техноинститута}, {базовую|базисную|основную} {миссию|задачу|делегацию|роль|функцию|цель|организацию} {совершают|выполняют|исполняют} {знания|багаж знаний|запас знаний} и информация. Именно {образование|обучение|учение} закладывает в {человека|людей|толпу} {знания|багаж знаний|запас знаний} и информацию.
Как видно из примера, мы использовали наборы слов в формате: {слово1|слово2…}.
Пункт – 2.
Теперь, когда у нас есть текст с наборами слов, мы будем использовать регулярное выражение, чтобы найти эти наборы в тексте.
Пример регулярного выражения:
preg_match_all('#{(.*)}#Ui',$content,$matches);
Пункт – 3.
Если регулярное выражение находит наборы слов, то оно их помещает в массив $matches.
Пункт – 4.
Теперь мы пройдемся по массиву $matches с помощью цикла for и рандомно заменим слова для каждого набора.
Пример кода замены слов:
for($i=0; $i<sizeof($matches[1]); $i++){
$ns=explode("|",$matches[1][$i]);
$c2=sizeof($ns);
$rand=rand(0,($c2-1));
$content=str_replace("{".$matches[1][$i]."}",$ns[$rand],$content);
}
Пункт – 5.
Функция explode разделяет текущий набор слов на части и помещает их в массив $ns. Далее мы с помощью функции sizeof, считаем количество элементов в массиве $ns. С помощью функции rand, мы генерируем рандомное число, которое нужно для случайного выбора слова из массива $ns. Далее мы с помощью функции str_replace заменяем текущий набор слов в тексте на случайное слово из этого набора.
Полный код размножения статьи:
$content="{В настоящее время|Сегодня|Сейчас} с {очень|весьма|крайне} {cкорым|быстрым|борзым|живым} {развитием|онтгенезом|онтогонией} {науки|доктрины|учения} и {техники|техучебы|техноинститута}, {базовую|базисную|основную} {миссию|задачу|делегацию|роль|функцию|цель|организацию} {совершают|выполняют|исполняют} {знания|багаж знаний|запас знаний} и информация. Именно {образование|обучение|учение} закладывает в {человека|людей|толпу} {знания|багаж знаний|запас знаний} и информацию.";
preg_match_all('#{(.*)}#Ui',$content,$matches);
for($i=0; $i<sizeof($matches[1]); $i++){
$ns=explode("|",$matches[1][$i]);
$c2=sizeof($ns);
$rand=rand(0,($c2-1));
$content=str_replace("{".$matches[1][$i]."}",$ns[$rand],$content);
}
Посмотреть – demo.
Вот в принципе и всё друзья. Применять этот код можно для генерации текстов или чего-то другого.
В следующих постах я раскрою вам новые способы парсинга feedburner и alexa traffic rank. Так что, если хотите быть в курсе событий, то подписывайтесь на обновление по RSS или Email.

про яндекс да, согласен
Хотел искать данный метод позже, но уже нашел чисто случайно. Вещь полезная. Данную технологию можно внедрять в свои различные php скрипты, к примеру постеры. Автору спасибо!
пожалуйста
Есть недостаток у скрипта. Не поддерживает вложенные конструкции типа
{{1|2}|{3|4}}
Для уменьшения затрат ресурсов сервера, желательно фун-ю sizeof вызвать до цикла, т.к. при каждой итерации sizeof вызывается,а sizeof ресурсозатратная фун-я.
А насчет скрипта в целом, мне понравился. +1
согласен, просто скрипт писался на скорую руку, и для оптимизации работы требуется его немного подредактировать.
ну это уже можно доработать если требуется.
Прикольная штука. Только для нормальной переработки текста одних синонимов мало. Лучше использовать программу какую-нибудь по размножению.
Это верно, но доработать всегда можно
Полезная штука. Я такой давно пользуюсь. Один текст можно размножить спокойно на 16 со степенью схожести 20-30%