【问题标题】:Find Duplicate in Text file在文本文件中查找重复项
【发布时间】:2015-04-16 01:04:24
【问题描述】:

我不知道如何解决这个“feof(): 3 is not valid steam resources”错误。我需要能够从用户那里获取输入并与 List.txt 文件中的数据进行交叉引用,并确保它在写入之前不重复。 有什么建议吗?

<!DOCTYPE>
<html>
    <body>  
        <form action="List.php" method="POST">
        Name: <input type="text" name="name" /><br />
        Email: <input type="text" name="email" /><br />
        <input type="submit" name="save" value="Submit" /><br />
        <input type="submit" name="open" value="Open in Text Editor" /><br />
        </form>

    <?php
    $myArray = array();

    if (isset($_POST['save']))
    {
        $name = $_POST['name'];
        $email= $_POST['email'];
        $toString = $_POST['name']. " ". $_POST['email'];
        $fp = fopen("List.txt", 'w');
        while (!feof($fp)) {
           $line = fgets($fp);
           if(strcmp($toString,$line)==0) {
               echo "<h1>Duplicate entery.</h1>"; 
           }
           else {
               $fp1 = fopen("List.txt", 'a');   
               fwrite($fp, $name);
               fwrite($fp, $email);
               echo "<h1>Success. U have been added to list.</h1>";   
            }
            fclose($fp);
         }
      }
    ?>
    </body>
</html>

【问题讨论】:

  • 你只设置为只写

标签: php file text


【解决方案1】:

您正在关闭while 循环中的流。将您的fclose($fp); 移出循环,并将流模式设置为w+,如下所示:

$fp = fopen("List.txt", 'w+');
while (!feof($fp)) {
  $line = fgets($fp);
  if(strcmp($toString,$line)==0) {
    echo "<h1>Duplicate entery.</h1>"; 
  }
  else {
    $fp1 = fopen("List.txt", 'a');   
    fwrite($fp, $name);
    fwrite($fp, $email);
    echo "<h1>Success. U have been added to list.</h1>";   
  }
  //fclose($fp); move this out
}
fclose($fp);

【讨论】:

  • 这段代码似乎可以工作,但它会覆盖现有数据。任何方式我都可以将数据保存在下一行
  • fopenmode参数替换为a+。你可以阅读更多关于它的信息here
猜你喜欢
  • 1970-01-01
  • 2021-04-08
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2013-04-27
  • 2016-08-04
相关资源
最近更新 更多