![从文件中的两行中提取文本并将其输出到表中](https://linux22.com/image/1403416/%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E4%B8%A4%E8%A1%8C%E4%B8%AD%E6%8F%90%E5%8F%96%E6%96%87%E6%9C%AC%E5%B9%B6%E5%B0%86%E5%85%B6%E8%BE%93%E5%87%BA%E5%88%B0%E8%A1%A8%E4%B8%AD.png)
我正在尝试为我的学校制作一个 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] = 姓名