Ищу класс функцию для перебора всех возможных вариантов строки

Всем добрый день.

Ищу класс (функцию) на PHP для перебора всех возможных вариантов строки сформированной из таких конструкций {||}.

Совсем великолепно будет если перебор будет идти от самой уникальной строки к самой неуникальной.
  • Вопрос задан
  • 3070 просмотров
Пригласить эксперта
Ответы на вопрос 2
@torchello
Недавно на Хабре проскакивал топик. Ссылку не сохранил, только код:
<?

$str = "{Пожалуйста|Просто} сделайте так, чтобы это {удивительное|крутое|простое} тестовое предложение {изменялось {быстро|мгновенно} случайным образом|менялось каждый раз}";
$finishStrs = array();

getVariants($str);

function getVariants($str) {
    global $finishStrs;
    $strs = array();
    
    
    if(preg_match("~\{([^{}]+)\}~siU", $str, $m)) {
        
        $foundExpression = $m[1];
        
        $currentVariants = explode("|", $foundExpression);
        
        foreach($currentVariants as $var) {
            $strs[] = str_replace('{'.$foundExpression.'}', $var, $str);
        }
        
        foreach($strs as $currentStr) {
            if(preg_match("~\{([^{}]+)\}~siU", $currentStr, $m)) {
                getVariants($currentStr);
            } else {
                $finishStrs[] = $currentStr;
            }
        }
               
    } else {
        $finishStrs = $str;
    }     

    
}

print_r($finishStrs);
Ответ написан
Комментировать
Cord
@Cord
тем кто вдруг сюда зашел, погуглив мою задачу в вакансии — этот алгоритм не учитывает позиционность вхождения и не является верным в общем случае (а не для конкретно данной строки).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект