Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从文本文件中读取数据并使用php生成表_Php_Html Table_Text Files - Fatal编程技术网

从文本文件中读取数据并使用php生成表

从文本文件中读取数据并使用php生成表,php,html-table,text-files,Php,Html Table,Text Files,我有一个文本文件,其中包含的数据看起来像是在表格中格式化的。但它们只是一排排排列有序的文本,就像一张桌子。我试图读取文本文件,只获取部分数据并形成一个HTML表 文本文件如下所示: Class 1: S.No RollNumber Name RandomAllocatedNumber Overall Result ---- ---------- ---- --------------------- -------------- 1 ABC-BYT-M56-8T Sam Jackson NBV26

我有一个文本文件,其中包含的数据看起来像是在表格中格式化的。但它们只是一排排排列有序的文本,就像一张桌子。我试图读取文本文件,只获取部分数据并形成一个HTML表

文本文件如下所示:

Class 1:
S.No RollNumber Name RandomAllocatedNumber Overall Result
---- ---------- ---- --------------------- --------------
1 ABC-BYT-M56-8T Sam Jackson NBV26173GHS Pass
2 BNS-SUD-H72-7Y Mario Javi  HAS12824SAD Pass

Class 2:
S.No RollNumber Name RandomAllocatedNumber Overall Result
---- ---------- ---- --------------------- --------------
1 POW-AVE-S36-7C Matt Stepson GSA22343GFS Pass
2 EWG-JAS-T12-3R Taylor Xavier  EWF54524EAD Pass
我使用此代码读取完整文件并显示输出:

<?php
foreach(glob(somefile.txt") as $filename) {
$file = $filename;
$contents = file($file);
$string = implode("<br>",$contents);
echo $string;
echo "<br></br>";
}
?>
上面的表格是我希望在php页面中显示的内容,而不是完全读取行并显示整个文件


如何更改我的简单代码以获得此结果?

下面是您可以做的。。这是我自己创造的

function mydata($file_path,$start_line=0,$end_line=0)
{
$urldatafile = file($file_path) or die("Sorry, Couldn't load data!!");
if($end_line==0){
    $linecount = count($urldatafile);
    $end_line = $linecount;
}
$array_data = array_slice($urldatafile, $start_line, $end_line);
    echo "<table>";
    foreach ($array_data as $data)
    { 
    $data = explode("===", $data);

    echo "<tr>";
        echo "<td>{$data[0]}</td><td>{$data[1]}</td><td>{$data[2]}</td><td>{$data[3]}</td>";
    echo "</tr>"
    }
    echo "</table>";
}
用法:

mydata("PATH TO EXAMPLE TEXT FILE");

请注意===它将两个值分隔在一行中,还请注意,在文本文件中,新行应该是新行,而不是换行。

对于该输入格式,这将产生您要求的输出:

<?php
$file = fopen("somefile.txt",'r');
$class = 0;
while (!feof($file))
{
    $line = trim(fgets($file));
    if ($line)
    {
        if (strlen($line)==8 && substr($line, 0, 5)=="Class") $class = $line[6];
        elseif (is_numeric($line[0]))
        {
            $parts = explode(" ",$line);
            echo $class." | ".$parts[1]." | ".$parts[count($parts)-2]."<br>";
        }
    }
}
fclose($file);
?>


我建议研究
fgets()
,这将为您提供一种逐行解析文件的方法。然后你可以用空格将其分解,并将你的所有部分整齐地排列在一个数组中,以便在表格中显示。维护类号、rollnumber和randomallocatednumber之间的连接是我实际遇到的问题。
ClassNo
将保持不变,直到你在文件中遇到一个新的,对的因此,一旦从文件中读取该行,
$data['ClassNo']=???
,直到到达下一行(在读取实际学生信息的循环之外),如果希望从第10行开始,也可以使用mydata(“示例文本文件的路径”,8,10);它将显示第8、第9和第10行的结果
mydata("PATH TO EXAMPLE TEXT FILE");
<?php
$file = fopen("somefile.txt",'r');
$class = 0;
while (!feof($file))
{
    $line = trim(fgets($file));
    if ($line)
    {
        if (strlen($line)==8 && substr($line, 0, 5)=="Class") $class = $line[6];
        elseif (is_numeric($line[0]))
        {
            $parts = explode(" ",$line);
            echo $class." | ".$parts[1]." | ".$parts[count($parts)-2]."<br>";
        }
    }
}
fclose($file);
?>