txt - leer varios valores de un archivo de texto en php
Leyendo datos del archivo de texto y formando una tabla usando php (2)
Tengo un archivo de texto que contiene datos que parecen formateados en una tabla. Pero solo se ordenan líneas de texto hechas para parecerse a una tabla. Intento leer el archivo de texto, obtener solo algunos datos y formar una tabla HTML.
El archivo de texto se ve así:
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
Usé este código para leer el archivo completo y mostrar el resultado:
<?php
foreach(glob(somefile.txt") as $filename) {
$file = $filename;
$contents = file($file);
$string = implode("<br>",$contents);
echo $string;
echo "<br></br>";
}
?>
Pero necesito obtener únicamente el número de alumno, el número de registro y el número de ubicación aleatorio de los datos anteriores.
Que se vería algo así como:
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
La tabla anterior es lo que busco que se muestre en la página php en lugar de leer totalmente las líneas y mostrar todo el archivo.
¿Cómo puedo cambiar mi código simple para obtener esto?
Bueno, aquí está lo que puedes hacer ... Es mi propia creación
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>";
}
En el archivo example.txt, escriba cada nueva línea con los siguientes valores de datos
Data1===data2===data3===data4
Data1===data2===data3===data4
Data1===data2===data3===data4
Data1===data2===data3===data4
Data1===data2===data3===data4
USO:
mydata("PATH TO EXAMPLE TEXT FILE");
Tenga en cuenta que === separa los dos valores en una línea, también tenga en cuenta que en el archivo de texto, la nueva línea debe ser una nueva línea, no un ajuste de palabra.
Con ese formato de entrada, esto debería producir el resultado que solicitó:
<?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);
?>