• Как настроить фильтр на слово на несколько строк из файла txt?

    mingumou
    @mingumou Автор вопроса
    Дмитрий, спасибо огромное! Работает на ура, только с $matches[1] не захотел выводить, только с $matches[0]...
    Теперь буду копаться как вывести строчки Test Case с порядковым номером и обернуть это все в табличку :)
  • Как настроить фильтр на слово на несколько строк из файла txt?

    mingumou
    @mingumou Автор вопроса
    Дмитрий, немного не догоняю как потом выводить циклом по результатам и паса и фэйла, подскажите если не сложно)))
  • Как настроить фильтр на слово на несколько строк из файла txt?

    mingumou
    @mingumou Автор вопроса
    Дмитрий, огромное спасибо, это действительно сработало! Но теперь вопрос как это вывести в таком виде:
    <- Start at 2020_12_17_00-08->
    testing build: 10289 from refs/heads/develop
    TestCase 1 Pass ✅
    TestCase 2 Pass ✅
    TestCase 3 Pass ✅

    <- Start at 2020_12_18_16-21->
    testing build: 10314 from refs/heads/develop
    No results! ❌

    <- Start at 2020_12_18_16-53->
    testing build: 10314 from refs/heads/develop
    TestCase 1 Pass ✅
    TestCase 2 Pass ✅
    TestCase 3 Pass ✅


    Написал код только для трех строчек с
    TestCase 1 Pass/Fail
    через
    preg_match_all($pattern, $subject, $matches, PREG_PATTERN_ORDER)
    но как сделать универсальное решение для большего кол-ва подходящих строк в .txt файле?

    Свой код прикладываю:
    <?php
    
    foreach (glob("*.txt") as $filename) {
        $textarray = file($filename);
        echo $textarray[3] . "<br>";
        echo $textarray[4] . "<br>";
        $textarray = array();
        $text = file_get_contents($filename);
            if (preg_match_all('#Fail#isU', $text, $matches, PREG_PATTERN_ORDER)) { 
                echo "TestCase 1" . " " . $matches[0][0] . " " ."❌" . "<br>" . "TestCase 2" . " " . $matches[0][1] . " " ."❌" . "<br>" . "TestCase 3" . " " . $matches[0][2] . " " ."❌" . "<br>" . "<br>"; 
        } 
            elseif (preg_match_all('#Pass#isU', $text, $matches, PREG_PATTERN_ORDER)) { 
                echo "TestCase 1" . " " . $matches[0][0] . " " ."✅" . "<br>" . "TestCase 2" . " " . $matches[0][1] . " " ."✅" . "<br>" . "TestCase 3" . " " . $matches[0][2] . " " ."✅" . "<br>" . "<br>";
        } 
            else {
                echo "No results! ❌" . "<br>" . "<br>";
            }
    
    }
    
    ?>


    Пробовал через implode() массив $matches[0] выводить в строку с разделителем, но тогда на последний мэтч не ставится галочка (((
    if (preg_match_all('#Fail#isU', $text, $matches)) { 
        $matches_separated = implode(" ❌<br>", $matches[0]);
        echo $matches_separated, "<br>";

    Прошу вашей помощи!
  • Как настроить фильтр на слово на несколько строк из файла txt?

    mingumou
    @mingumou Автор вопроса
    Дмитрий, а не подскажите как мне расписать функционал вывода отдельной строки с "TestCase 1: Pass"? Нагуглил как выводить построчно через file(), но не уверен, что это мне подойдет, потому что в зависимости от тестов, количество тесткейсов может меняться и выводить фиксированное кол-во будет некорректно.
    И все никак не могу разобраться с preg_match_all, не понимаю как задавать аргументы.
  • Как настроить фильтр на слово на несколько строк из файла txt?

    mingumou
    @mingumou Автор вопроса
    Дмитрий, спасибо! Буду пробовать, но glob() что-то не смог завести, возможно что-то не так указывал... сделал в итоге через scandir() но там нет настройки маски по "*.txt" файлам.