[PHP][C#] Mikser synonimów

Często w swoich projektach wykorzystuję mechanizm generowania unikalnego tekstu za pomocą zleconych, synonimizowanych fragmentów. Problem pojawił się w momencie pisania skryptu, który by to robił w sposób automatyczny przy każdej określonej akcji.

W ten sposób powstał poniższy kod, który idealnie nadaje się przy generowaniu z jednostopniowym zagnieżdżeniem słów.

{Tutaj|W tym miejscu} {możesz|jesteś w stanie} 
{znaleźć|wyszukać} {przykładowy|wzorowy} {tekst|fragment}
 {używany|wykorzystywany} w mikserze!

namespace iProSEOSoft
{
    public class Randomizer
    {
        private Random random;

        public string input;
        public string output;
        public int limit = 1;

        private string[] braces = new string[] { "{", "}" };
        private char delimiter = '|';

        public Randomizer(string input)
        {
            this.input = input;
            random = new Random();
        }

        private void mixAll()
        {
            this.output = this.input;

            while (this.output.IndexOf(this.braces[1]) > 0)
            {
                var closed = this.output.IndexOf(this.braces[1]);
                var substr = this.output.Substring(0, closed + 1);
                var from = substr.IndexOf(this.braces[0]);
                substr = substr.Substring(from);
                var _substr = this.mixText(substr);
                this.output = this.output.Replace(substr, _substr);
                substr = "";
                _substr = "";
            }
        }

        public string mixText(string text)
        {
            text = text.Replace(this.braces[0], "").Replace(this.braces[1], "");
            var elements = text.Split(this.delimiter);
            return elements[random.Next(0, elements.Length)];
        }

        public string mix()
        {
            this.mixAll();
            return this.output;
        }
    }
}
class OceanFireSynonizer
{
    public $input;
    public $output;
    public $limit = 1;

    private $braces = array('{','}');
    private $delimiter = '|';

    public function __construct($input)
    {
        $this->input = $input;
    }

    private function mixAll()
    {
        $this->output = $this->input;

            while (strpos($this->output,$this->braces[1]) > 0)
            {
                $closed = strpos($this->output,$this->braces[1]);
                $substr = substr($this->output, 0, $closed + 1);
                $from = strpos($substr,$this->braces[0]);
                $substr = substr($substr,$from);
                $_substr = $this->mixText($substr);
                $this->output = str_replace($substr, $_substr, $this->output);
                $substr = "";
                $_substr = "";
            }
    }

    public function mixText($text)
    {
        $text = str_replace($this->braces[0], "", $text);
        $text = str_replace($this->braces[1], "", $text);
        $elements = split($this->delimiter, $text);
        return $elements[rand(0, sizeof($elements))];
    }

    public function mix()
    {
        $this->mixAll();
        return $this->output;
    }
}

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *