2011-05-23 55 views
1

我使用下面的代码来比较日志的最后一行减去$ data的时间戳,因为它们两个都是完全相同的,但它仍然在写每次都有一个新的日志条目。我在这里错过了什么吗?如果这些行是相同的,它应该会中断,如果它们不是,它应该写一个新的条目。使用strcmp来防止重复的日志行

$data = "This is a test." 
$date = date("m/j : g:i A: "); 
$lines = file('log.txt'); 
$last_line = $lines[count($lines)-1]; 
$last_line = preg_replace('/[01][0-9]\/[0-3]?[0-9] : 1?[0-9]:[0-5][0-9] (A|P)M: /','',$last_line); 

if (strcmp($data, $last_line) == 0) { 
break; 
} else { 
file_put_contents('log.txt', $date.$data.PHP_EOL, FILE_APPEND); 
} 
} 

回答

2

您应该在$ last_line上使用修剪。之后可能会有一个换行符,使字符串不相等。

+0

这是它的感谢,我实际上认为这两个字符串被修剪较早,但线缺失,所以我想他们被删除莫名其妙。 – 2011-05-23 14:29:57

1

你在混合$date$data?还是那两个不同的变量?

+0

对不起耶两个不同的变量。我会更新更清晰。 – 2011-05-23 14:24:30