Extrai texto de duas linhas em um arquivo e imprimo-as em uma tabela

2

Estou tentando criar um script PHP para minha escola. O diretório da web da escola tem cerca de 100 arquivos de texto, um arquivo de texto para cada aluno. Todo arquivo de texto tem duas linhas como:

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

Eu quero ecoar esse id e o valor do nome em uma tabela. Mas essas duas linhas são aleatórias. Pode ser na linha 23 e 24, ou às vezes 45 e 46.

Aqui está minha tentativa:

$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>';

Mas isso não funciona. O que estou fazendo errado?

    
por noob 31.03.2014 / 19:52

1 resposta

0

Talvez você possa usar uma expressão regular para identificar o id e o nome, algo ao longo da linha de: id = nil

id = line.match (/ stu \ s + \ $ id \ s * = \ s * \ '(\ d +) \'; /) [1] a menos que id

Você também pode armazenar os dados em uma estrutura de dados mais conveniente, por exemplo:

alunos [id] = nome

    
por 31.03.2014 / 20:38

Tags