我有一个文本文件,其中包含看起来像在表格中格式化的数据。但它们只是有序的文字行,类似于一张桌子。我正在尝试阅读文本文件,只获取一些数据并形成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>";
}
?>
但是我需要从上面的数据中只获得学号,滚动号和RandomAllocatedNumber。
这看起来像是:
ClassNo |RollNumber |RandomAllocatedNumber
1 |ABC-BYT-M56-8T |NBV26173GHS
1 |BNS-SUD-H72-7Y |HAS12824SAD
2 |POW-AVE-S36-7C |GSA22343GFS
2 |EWG-JAS-T12-3R |EWF54524EAD
上面的表格是我在php页面中显示的内容,而不是完全读取行并显示整个文件。
如何更改我的简单代码才能获得此功能?
答案 0 :(得分:2)
使用该输入格式,这应该产生您要求的输出:
<?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);
?>
答案 1 :(得分:1)
这就是你可以做的......它是我自己的创作
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>";
}
在example.txt文件中,使用以下数据值编写每个新行
Data1===data2===data3===data4
Data1===data2===data3===data4
Data1===data2===data3===data4
Data1===data2===data3===data4
Data1===data2===data3===data4
用法:
mydata("PATH TO EXAMPLE TEXT FILE");
请注意===它将一行中的两个值分开,还要注意在文本文件中新行应该是新行而不是自动换行..