好的,我以前对此有过疑问。
我发现如何使用基于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时间,这表明该行需要留在那里。
是否有片段或者这会很难?
任何帮助都将不胜感激。
答案 0 :(得分: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
答案 1 :(得分: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], "|");
}
}
?>