php文本文件搜索和删除

时间:2013-03-14 09:50:59

标签: php search

我有一个文本文件(in.txt),其中包含多行文字。我需要搜索变量字符串,如果找到,删除整行,但保留其他行。我已经使用了下面的脚本,但它似乎摆脱了所有数据并写下我正在搜索的内容。请有人指出我正确的方向吗? 'key'是我要搜索的字符串。

$key = $_REQUEST['key'];
$fc=file("in.txt");


$f=fopen("in.txt","w");


foreach($fc as $line)
{
      if (!strstr($line,$key)) 
        fputs($f,$line); 
}
fclose($f);

4 个答案:

答案 0 :(得分:2)

我能想出的最简单的是

<?php

    $key = 'a';
    $filename = 'story.txt';
    $lines = file($filename); // reads a file into a array with the lines
    $output = '';

    foreach ($lines as $line) {
        if (!strstr($line, $key)) {
            $output .= $line;
        } 
    }

    // replace the contents of the file with the output
    file_put_contents($filename, $output);

答案 1 :(得分:1)

您已在write模式下打开文件。这将删除其所有数据。

您应该创建一个新文件。将数据写入较新的数据。删除旧版本。并重命名新的。

OR

read模式打开此文件。将此文件的数据复制到变量。以write模式再次打开。并写入数据。

答案 2 :(得分:0)

它为我工作

<?php
$key = $_REQUEST['key'];
$contents = '';
$fc=file("in.txt");
 foreach($fc as $line)
  {
    if (!strstr($line,$key))
    {
       $contents .= $line; 
     }  
  }
  file_put_contents('in.txt',$contents);
 ?>

答案 3 :(得分:-1)

$key = $_REQUEST['key'];
$fc=file("in.txt");


$f=fopen("in_temp.txt","w");

$temp = array();
foreach($fc as $line)
{
    if (substr($line,$key) === false) 
        fwrite($f, line);
}
fclose($f);
unlink("in.txt");
rename("in_temp.txt", "in.txt");