Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (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);
    
    Ответ написан
    Комментировать