我试图阻止文本变成块。
$file = fopen("output.txt", "r");
while(! feof($file))
{
$line = fgets($file);
if (preg_match('/Enterprise Weekly Time Sheets Date:/',$line)){
echo("<br>Time Sheet Date found ");
$data = explode(' ', $line);
echo sprintf("%40s\n", $data[5]);
}
if (preg_match('/UNREGISTERED COPY Selection Dates: /',$line)){
echo("<br>Selection Dates found ");
$data = explode(' ', $line);
echo sprintf("%40s %40s\n", $data[4], $data[5]);
}
if (preg_match('/Id\#/',$line)){
echo("<br>Id found ");
$data = explode(' ', $line);
echo sprintf("%40s %40s\n", $data[7], $data[1]);
}
if (preg_match('/TOTAL HOURS: /',$line)){
$data = explode(' ', $line);
echo sprintf("%40s %40s %40s\n", $data[2], $data[4], $data[7]);
}
}
我已经解析了数据,并且可以在WHILE语句中访问变量。
现在,当我浏览所有文本时,我一直在覆盖数据。
根据最新的要求,我被要求提供关于文本文件外观的更好图像。
在github上查看文件MultipleReport.txt。
理想情况下,我逐行解析所有记录,每15行我preg_match并存储所有变量并将所有内容放入维度数组中。
对于每15行文本,一名员工将拥有所有详细信息 像这样:
$employees = [
1 => [
'CreationDate' => "10-13-2014",
'SelectionDate1' => "09-29-2014",
'SelectionDate2' => "10-05-2014",
'Company' => "00010453",
'Id' => "000007062",
'Name' => "HAYES GILL",
'RegHours' => 40.00,
'OverHours' => 2.50,
'TotalHours' => 42.50,
],
2 => [
'CreationDate' => "10-13-2014",
'SelectionDate1' => "09-29-2014",
'SelectionDate2' => "10-05-2014",
'Company' => "00010453",
'Id' => "000007081",
'Name' => "JONES TOM",
'RegHours' => 40.00,
'OverHours' => 12.50,
'TotalHours' => 52.50,
]
];
通过Multidimesional数组收集数据或者使用OOP类创建对象会更容易吗?
答案 0 :(得分:0)
您是否尝试使用索引构建数组?
$data = array();
$ct = 0;
$ix = 0;
foreach(file("output.txt") as $line){
$ct++
$lines[] = $line;
if($ct==15){
$line = implode("\r\n",$lines);
$ct = 0;
$ix++;
if (preg_match('/Enterprise Weekly Time Sheets Date:/',$line)){
echo("<br>Time Sheet Date found ");
$data[$ix] = explode(' ', $line);
echo sprintf("%40s\n", $data[5]);
}
if (preg_match('/UNREGISTERED COPY Selection Dates: /',$line)){
echo("<br>Selection Dates found ");
$data[$ix] = explode(' ', $line);
echo sprintf("%40s %40s\n", $data[4], $data[5]);
}
if (preg_match('/Id\#/',$line)){
echo("<br>Id found ");
$data[$ix] = explode(' ', $line);
echo sprintf("%40s %40s\n", $data[7], $data[1]);
}
if (preg_match('/TOTAL HOURS: /',$line)){
$data[$ix] = explode(' ', $line);
echo sprintf("%40s %40s %40s\n", $data[2], $data[4], $data[7]);
}
}
}
print_r($data);