Янв
16
Иногда возникает задача сгенерировать некоторое количество разных статей, ссылок или тестов на основе одного шаблона. Это нужно оптимизаторам, веб-мастерам или даже дорвейщикам.
В этой статье я расскажу, как решить такую задачу на php.
Как правило, шаблоны для этой цели выглядят таким образом:
1 | Это {скрипт|php функция} генерации текстов {на сайт|для {анкоров|сапы|sape}} |
Фигурные скобки {} – ограничивают в себе варианты фрагментов для перебора, а | служит для разделения этих самых фрагментов.
Для того, чтобы получить из этого шаблона все возможные фразы я использую такую функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function textGenerator($text) { static $result; if (preg_match("/^(.*)\{([^\{\}]+)\}(.*)$/isU", $text, $matches)) { $p = explode('|', $matches[2]); foreach ($p as $comb) textGenerator($matches[1].$comb.$matches[3]); } else { $result[] = $text; return 0; } return array_values(array_unique($result)); } $string = "Это {скрипт|php функция} генерации текстов {на сайт|для {анкоров|сапы|sape}}"; $varianty = textGenerator($string); print_r($varianty); |
В итоге получается вот что:
1 2 3 4 5 6 7 8 9 10 11 | Array ( [0] => Это скрипт генерации текстов на сайт [1] => Это скрипт генерации текстов для анкоров [2] => Это скрипт генерации текстов для сапы [3] => Это скрипт генерации текстов для sape [4] => Это php функция генерации текстов на сайт [5] => Это php функция генерации текстов для анкоров [6] => Это php функция генерации текстов для сапы [7] => Это php функция генерации текстов для sape ) |
Март 19th, 2011 at 18:30
Прикольно)) А зачем такие сложности? Можно же просто скачать бесплатную программу или даже онлайн? Или это так, для общего развития))
Март 22nd, 2011 at 17:07
Я такое использую в основном в своих скриптах… Например, для сабмиттера текстов в каталоги или генератора уникальных сообщений и т.д. Кому-то конечно удобнее получать результаты из программы или онлайн.