-2

好的,我之前对此有疑问。

我发现了如何使用基于 unix 时间的 php 删除 txt 文件中的行

这是我当前的代码。

<?php
$output = array();
$lines = file('file.txt');
$now = time();

foreach ($lines as $line) {
  list($content, $time) = explode("|", $line);
  if ($time > $now) {
 $output[] = $line;
 }
 }
 $outstring = implode($output);
file_put_contents("file.txt", $outstring);
print time();
?>

该代码的作用是文件中的每个条目在 Unix 中都有一个时间

所以

它的设置是这样的

Content | Unix Time
Content | Unix Time

我想要做的是有一个 PHRASE 或 WORD 代替 unix 时间,这表明该行需要留在那里。

有片段还是很难?

任何帮助,将不胜感激。

4

2 回答 2

1

添加

$keepStr = "KEEP";

在顶部并将foreach循环替换为:

foreach ($lines as $line) {
    list($content, $value) = explode("|", $line);
    if ($value == $keepStr || $value > time() ) {
       $output[] = $line;
    }
}

会转换

Content1 | KEEP
Content2 | Somevalue
Content3 | Someothervalue
Content4 | KEEP

Content1 | KEEP
Content4 | KEEP

您可以通过更改给定的值来定义要保留的字符串$keepStr

于 2012-08-25T13:27:26.023 回答
1

看看我之前在您的帖子中发布的内容(供参考)。您可以通过更改if语句中的条件轻松地做到这一点。(其他解决方案也是如此,看看我在if声明中所做的更改)。

使用我之前发布的代码并进行一些修改:

<?php
$whiteword = "keep";
$filtered = array();
if($handle = fopen("file.txt", "r")){
    while($data = fgetcsv($handle, 0, "|")){
        if($data[1] === $whiteword || $data[1] > time()){
            $filtered[] = $data;
        }
    }
    fclose($handle);
}
if($handle = fopen("file.txt", "w")){
    for($i = 0; $i < count($filtered); $i += 1){
        fputcsv($handle, $filtered[$i], "|");
    }
}
?>
于 2012-08-25T13:34:25.887 回答