[英]read txt file and parse text
我正在嘗試解析文本文件,但是我不確定這樣做的最佳方法和實踐。 使用PHP,我想將整個文件加載到字符串中,還是應該逐行執行? 我不太喜歡JavaScript方法!
是否應該使用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
=>
示例如何在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;
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.