Это должно привести вас туда
$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