Размножение статьи силами 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.