2

Я пытаюсь сделать сценарий PHP для своей школы. В интернет-каталоге школы находится около 100 текстовых файлов, по одному текстовому файлу на каждого ученика. Каждый текстовый файл имеет две строки, такие как:

stu $id = '12701';
stu $name = 'alex';

Я хочу отобразить это значение идентификатора и имени в таблице. Но эти две строки случайны. Это может быть строка 23 и 24, а иногда 45 и 46.

Вот моя попытка:

$directory = 'lessons/'; // The directory to the lesson text files

$linesToReturn = 50; //  i tired to read top 50 lines , so i can grab from them.

// Find all files in the directory which are .txt files
foreach( glob( $directory . "*.txt" ) as $filename )
{
    // Open the file
    if( $handle = @fopen( $filename, "r") )
    {
        $x = 0; // Start the line counter

        // Cycle each line until end or reach the lines to return limit
        while(! feof( $handle ) or $x < $linesToReturn )
        {
            $line = fgets($handle); // Read the line

            $lessons[$filename][] = $line;

            $x++; // Increase the counter
        }


    }
}

// creates a blank list if no files or valid files were found.
if(! isset( $lessons ) ) $lessons = array();

// The rest of the page just builds a simple table to display each lesson.-
echo '<h1>id & names</h1>';
echo '<table>';
echo '<th>id</th><th>name</th>';

foreach( $lessons as $file => $details )
{
    echo '<tr><td>' . $details[0] . '</td><td>' . $details[1] . '</td> </tr> ';
}

echo '</table>';

Но это не работает. Что я делаю неправильно?

1 ответ1

0

Возможно, вы могли бы использовать регулярное выражение для поиска идентификатора и имени, что-то вроде строки: id = nil

id = line.match(/stu\s+\$ id\s * =\s *\'(\d+)\';/)[1], если только id

Вы также можете сохранить данные в более удобной структуре данных, например:

студенты [id] = имя

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .