2013-07-08 171 views
1

我试图解析一个文本文件,但我不确定最好的方法和做法,这样做。使用PHP我想将整个文件加载到一个字符串中,还是应该逐行执行?我对JavaScript方法很满意,只是不太熟悉!阅读txt文件和解析文本

我应该用strstr搜索干草堆里的针吗?或者有什么其他方法可以解析一致的简单文本文件。

注意我想出来的文本文件(temp_log.txt)的唯一数据是:

Date: 07/07/2013 Time: 00:57:00.208  21 C 
Date: 07/07/2013 Time: 00:57:02.029  25 C 

temp_log.txt:

=>MET RTD 

SEL-2411         Date: 07/07/2013 Time: 00:57:00.208 
DEVICE 

INTRTD01 21 C 
INTRTD02 Open 
INTRTD03 Open 
INTRTD04 NA 
INTRTD05 NA 
INTRTD06 NA 
INTRTD07 NA 
INTRTD08 NA 
INTRTD09 NA 
INTRTD10 NA 

=> 

=>MET RTD 

SEL-2411         Date: 07/07/2013 Time: 00:57:02.029 
DEVICE 

INTRTD01 25 C 
INTRTD02 Open 
INTRTD03 Open 
INTRTD04 NA 
INTRTD05 NA 
INTRTD06 NA 
INTRTD07 NA 
INTRTD08 NA 
INTRTD09 NA 
INTRTD10 NA 

=> 
+0

正则表达式可能是您最好的选择。这种格式对他们来说非常简单。 – FakeRainBrigand

+0

如果你正在使用PHP:用php解析日志文件(例如正则表达式);将结果转换为[JSON](http://www.php.net/manual/en/function.json-encode.php);将JSON传递给你的JS客户端。除此之外,这将具有能够通过AJAX访问数据的优势。另外,您的日志文件中无用的剩余部分不需要传输到客户端。 – MCL

回答

2

例如何获得日期和时间和温度PHP中的ReGex

<?php 
$text = 
"=>MET RTD 

SEL-2411         Date: 07/07/2013 Time: 00:57:00.208 
DEVICE 

INTRTD01 21 C 
INTRTD02 Open 
INTRTD03 Open 
INTRTD04 NA 
INTRTD05 NA 
INTRTD06 NA 
INTRTD07 NA 
INTRTD08 NA 
INTRTD09 NA 
INTRTD10 NA 

=> 

=>MET RTD 

SEL-2411         Date: 07/07/2013 Time: 00:57:02.029 
DEVICE 

INTRTD01 25 C 
INTRTD02 Open 
INTRTD03 Open 
INTRTD04 NA 
INTRTD05 NA 
INTRTD06 NA 
INTRTD07 NA 
INTRTD08 NA 
INTRTD09 NA 
INTRTD10 NA 

=>"; 

// split text to lines 
$lines = explode("\n", $text); 

// find date, time and temperature 
$all = array(); 
$date = ""; 
$time = ""; 

foreach($lines as $line) { 
    $number = preg_match('#Date: ([^ ]+).*Time: ([^ ]+)#', $line, $result); 
    if($number > 0) { 
     $date = $result[1]; 
     $time = $result[2]; 
    } 

    $number = preg_match('# (\d+) C#', $line, $result); 
    if($number > 0) { 
     $all[] = array($date, $time, $result[1]); 
    } 
} 

// print all results 
foreach($all as $element) { 
    echo "Date: ", $element[0], " Time: ", $element[1], "  ", $element[2], " C", PHP_EOL; 
} 

?> 
+0

谢谢你的回应 –