从文件中的两行中提取文本并将其输出到表中

从文件中的两行中提取文本并将其输出到表中

我正在尝试为我的学校制作一个 PHP 脚本。学校的网络目录有大约 100 个文本文件,每个学生一个文本文件。每个文本文件都有两行,例如:

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

我想在表中回显此 id 和 name 值。但这两行是随机的。它可能位于第 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

也许你可以使用正则表达式来 grep id 和 name,类似于:id=nil

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

您可能还希望将数据存储在更方便的数据结构中,例如:

学生[ id] = 姓名

相关内容