Recursive php spintax class помогите к скрипту прикрутить

Тема в разделе "Как сделать...", создана пользователем grendmaster, 19 фев 2012.

  1. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Привет всем, никак не хочет работать этот класс в моем скрипте,вернее сказать класс сам по себе работает отлично,но когда вместо текста ставлю переменную тут и возникают ошибки

    Сам класс:
    Код:
    <?php
    class Spintax {
     
      function spin($str, $test=false)
      {
          if(!$test){
            do {
                $str = $this->regex($str);
            } while ($this->complete($str));
            return $str;
          } else {
            do {
                echo "<b>PROCESS: </b>";var_dump($str = $this->regex($str));echo "<br><br>";
            } while ($this->complete($str));
            return false;
          }
      }
     
      function regex($str)
      {
          preg_match("/{[^{}]+?}/", $str, $match);
          // Now spin the first captured string
          $attack = explode("|", $match[0]);
          $new_str = preg_replace("/[{}]/", "", $attack[rand(0,(count($attack)-1))]);
          $str = str_replace($match[0], $new_str, $str);
          return $str;
      }
     
      function complete($str)
      {
          $complete = preg_match("/{[^{}]+?}/", $str, $match);
          return $complete;
      }
    }
    Как использовать:
    Код:
    <?php
    include("spintax.class.php");
    $spintax = new Spintax;
    // Add true to the spin functions to debug and see each line as it is spun in the process
    $spintax->spin("{{Hello|Hi} my name is {Ron|Ronald}|Another random {sentence|{statement|phrase|saying}}}");
    Нашел здесь: http://ronaldarichardson.com/2011/09/23/recursive-php-spintax-class-3-0/

    Как здесь вместо текста вставить переменную?
    $spintax->spin("{{Hello|Hi} my name is {Ron|Ronald}|Another random {sentence|{statement|phrase|saying}}}");

    Нужно $spintax->spin('$title');
    $title = file('titles.txt');

    Понимаю что ошибка скорее всего из-за неправильного чтения файлов,подскажите плиз как правильно?

    $title = file('titles.txt'); здесь заработало так $title = file_get_contents('titles.txt')
    titles.txt - одна строка {KEY1|KEY2|KEY3}

    description.txt - много строк и не работает
    {KEY1|KEY2|KEY3}
    {KEY7|KEY6|KEY1}
    {KEY9|KEY4|KEY2}
    как description.txt читать построчно и целиком одновременно?
     
  2. d1mka

    d1mka Постоялец

    Регистр.:
    20 мар 2007
    Сообщения:
    92
    Симпатии:
    23
    Код:
    $title = file_get_contents('titles.txt');
     
    $stroks=explode("\r\n",$title);
    foreach ($stroks as $ind=>$val){
    $spintax->spin($val);
    }
    
    Как то так наверное!
     
  3. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Спасибо за участие D1mka но не помогло,скрипт делаю под xhe, он вот что пишет:
    Warning: urlencode() expects parameter 1 to be string, array given in C:\Program Files\XWeb\Human Emulator\Templates\Objects\DOM\xhe_input.php on line 130

    Ьлин может есть более простое решение рандомизировать текст?