Читать строку из текстового файла - PullRequest
0 голосов
/ 22 августа 2011

Мне дали текстовый файл, который содержит данные в расписании. Эта строка содержит имя и отдел, а также время их выхода / ввода. Приведенный ниже код позволяет мне отображать весь текстовый файл, но я хочу прочитать значения по имени и отделу из файла и хочу отобразить это.

<?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

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Это должно привести вас туда

$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

0 голосов
/ 22 августа 2011

Вы можете использовать

$file = file('filename.txt');

Возвращает массив с каждым элементом, содержащим каждую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...