Для получения полного доступа
зарегистрируйтесь.
RSS

Все сниппеты с тэгом «генерирование строки»



Gravatar image
jumper423
  • Репутация: 58
  • Сниппеты: 9
  • Ревизии: 2

Пример шаблона: (Здравствуйте|Добрый день), Евгений.(| Сегодня (прекрасная|плохая|ужасная) погода, не так ли?| Как Вы (поживаете|себя чувствуете)?)

В круглых скобках(группах) фразы разделены символом |. Из группы выбирается одна случайная фраза. Группы могут содержать неограниченное количество подгрупп. Таким образом из примера-шаблона могут получиться лишь следующие фразы:

  • Здравствуйте, Евгений.
  • Добрый день, Евгений.
  • Здравствуйте, Евгений. Сегодня прекрасная погода, не так ли?
  • Добрый день, Евгений. Как Вы поживаете? и т.д.
<?php

function strTemplate($enter)
{
    while(preg_match_all('/\\(([^()]*)\\)/', $enter, $matches))//Если есть строка со скобками в скоторой нет скобок, то записываем её в массив
    {
        $list = explode("|",substr($matches[0][0], 1, strlen ($matches[0][0])-2));//массив вариантов
        $enter = substr($enter, 0, strpos($enter, $matches[0][0])).$list[rand(0, substr_count(substr($matches[0][0], 1, strlen ($matches[0][0])-2),"|"))].substr($enter, strlen ($enter) - strrpos(strrev ($enter), strrev ($matches[0][0])));//собираем строку
    }
    echo $enter;
}
 
$a = strTemplate("(Здравствуйте|Добрый день), Евгений.(| Сегодня (прекрасная|плохая|ужасная) погода, не так ли?| Как Вы (поживаете|себя чувствуете)?)");
echo ($a);