Размножение статьи силами PHP | Makarou.com - когда сайты превращаются в бизнес

Размножение статьи силами PHP

Размножение статьи силами PHPВсем привет! Сегодня я хочу вам поведать “тайну”, как сделать скрипт который будет размножать статью из оригинала. Этот скрипт я искал в сети, но так и не смог найти, а он мне требовался при своих разработках.

Размножение статьи будет происходить следующим образом:

  1. В тексте статьи пишутся наборы слов в формате: {слово1|слово2…} .
  2. Регулярное выражение проверяет текст на вхождение наборов слов.
  3. Если наборы найдены, то они помещаются в один массив.
  4. С помощью цикла for, проходимся по массиву и заменяем слова.
  5. Слова заменяются рандомно для каждого набора слов.

Пункт – 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. 30 Июн 2010 15:57 | #1

    @mayskiykot
    про яндекс да, согласен ;)

  2. 30 Июн 2010 22:13 | #2

    Хотел искать данный метод позже, но уже нашел чисто случайно. Вещь полезная. Данную технологию можно внедрять в свои различные php скрипты, к примеру постеры. Автору спасибо!

  3. 01 Июл 2010 10:40 | #3

    @AWM
    пожалуйста ;)

  4. Neskazhy
    07 Июл 2010 17:14 | #4

    Есть недостаток у скрипта. Не поддерживает вложенные конструкции типа
    {{1|2}|{3|4}}

  5. 12 Июл 2010 16:39 | #5

    Для уменьшения затрат ресурсов сервера, желательно фун-ю sizeof вызвать до цикла, т.к. при каждой итерации sizeof вызывается,а sizeof ресурсозатратная фун-я.

    А насчет скрипта в целом, мне понравился. +1

  6. 16 Июл 2010 18:03 | #6

    @Громит
    согласен, просто скрипт писался на скорую руку, и для оптимизации работы требуется его немного подредактировать.

  7. 16 Июл 2010 18:05 | #7

    @Neskazhy
    ну это уже можно доработать если требуется.

  8. 05 Ноя 2010 9:28 | #8

    Прикольная штука. Только для нормальной переработки текста одних синонимов мало. Лучше использовать программу какую-нибудь по размножению.

  9. 05 Ноя 2010 11:47 | #9

    @Matt
    Это верно, но доработать всегда можно ;)

  10. 06 Дек 2010 19:09 | #10

    Полезная штука. Я такой давно пользуюсь. Один текст можно размножить спокойно на 16 со степенью схожести 20-30%