-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

私がやりたいのは、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 に答える