我收到了一个包含时间表数据的文本文件。该行包含一个名称和一个部门以及它们的超时时间。下面的代码允许我显示整个文本文件,但我想从文件中按名称和部门读取值,并希望显示它。
<?php
$file = fopen("C:\Bhrugisha mam.txt","r") or exit("Unable to open file!");
while(!feof($file))
{
echo fgets($file). "<br />";
}
fclose($file);
?>
这是我文本文件中的一些数据......
VCANTECH - Log Report
6 Bhrugisha Shah
Hr
Department: HR
August, 2011 Page 1 of 2
-----------------------------------------------------------------------------------------------------------------
Date : 01/Aug/2011 Shift : 1 ( 9:30:00 AM To 6:30:00 PM )
LOG TIME : 9:23:00 AM LOG TYPE : IN
LOG TIME : 1:55:00 PM LOG TYPE : OUT
LOG TIME : 2:18:00 PM LOG TYPE : IN
LOG TIME : 6:45:00 PM LOG TYPE : OUT
答案 0 :(得分:2)
这应该可以帮助你
$input = fread( $file, filesize("PATHTOFILE"));
preg_match("%Department:[\s]{1,}[a-z]{1,}%i", $input, $department);
var_dump($department);
//OUTPUT array(1) { [0]=> array(1) { [0]=> string(22) "Department: HR" }
preg_match_all("%log time : [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} (AM|PM) LOG TYPE : (IN|OUT)%i", $input, $matches);
var_dump($matches);
/*
OUTPUT
array(3) { [0]=> array(4) { [0]=> string(57) "LOG TIME : 9:23:00 AM LOG TYPE : IN" [1]=> string(58) "LOG TIME : 1:55:00 PM LOG TYPE : OUT" [2]=> string(57) "LOG TIME : 2:18:00 PM LOG TYPE : IN" [3]=> string(58) "LOG TIME : 6:45:00 PM LOG TYPE : OUT" } [1]=> array(4) { [0]=> string(2) "AM" [1]=> string(2) "PM" [2]=> string(2) "PM" [3]=> string(2) "PM" } [2]=> array(4) { [0]=> string(2) "IN" [1]=> string(3) "OUT" [2]=> string(2) "IN" [3]=> string(3) "OUT" } }
*/
foreach($matches[0] as $row){
preg_match("%[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} (AM|PM)%", $row, $logTime);
//var_dump($logTime);
//OUTPUT array(2) { [0]=> string(10) "9:23:00 AM" [1]=> string(2) "AM" } array(2) { [0]=> string(10) "1:55:00 PM" [1]=> string(2) "PM" } array(2) { [0]=> string(10) "2:18:00 PM" [1]=> string(2) "PM" } array(2) { [0]=> string(10) "6:45:00 PM" [1]=> string(2) "PM" }
$logTime = $logTime[0];
preg_match("%(IN|OUT)%",$row, $inOut);
var_dump($inOut);
//OUTPUT array(2) { [0]=> string(2) "IN" [1]=> string(2) "IN" } array(2) { [0]=> string(3) "OUT" [1]=> string(3) "OUT" } array(2) { [0]=> string(2) "IN" [1]=> string(2) "IN" } array(2) { [0]=> string(3) "OUT" [1]=> string(3) "OUT" }
$inOut = $inOut[0];
}
我建议对正则表达式进行一些编辑,因为我只是复制并粘贴空格。 [\ s] {1,}可用于代替疯狂的空间:P
答案 1 :(得分:0)
您可以使用
$file = file('filename.txt');
它将返回包含每行的每个元素的数组。