【问题标题】:Use strcmp to prevent duplicate log lines使用 strcmp 防止重复的日志行
【发布时间】:2011-05-23 14:18:10
【问题描述】:

我正在使用下面的代码将日志的最后一行减去时间戳与 $data 进行比较,我回显了它们,它们完全相同,但它仍然每次都写入一个新的日志条目。我在这里错过了什么吗?如果行相同,则应中断,否则应写入新条目。

$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);
}
}

【问题讨论】:

    标签: php compare strcmp


    【解决方案1】:

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

    【讨论】:

    • 就是这样,谢谢,我实际上以为两个字符串都被修剪过,但是线条丢失了,所以我猜它们被以某种方式删除了。
    【解决方案2】:

    您是否混淆了$date$data?还是这两个不同的变量?

    【讨论】:

    • 对不起,是两个不同的变量。我会更新得更清楚。
    猜你喜欢
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多