PHP删除TXT文本内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP删除TXT文本内容相关的知识,希望对你有一定的参考价值。

aaa.txt文件内容如下
10086|256
18806|8995
13800|555
138000|1585
13800|1585

<?php
$filename="aaa.txt";//定义操作文件
$delline=3; //要删除的行数
$farray=file($filename);//读取文件数据到数组中
for($i=0;$i<count($farray);$i++)

if(strcmp($i+1,$delline)==0) //判断删除的行,strcmp是比较两个数大小的函数

continue;

if(trim($farray[$i])<>"") //删除文件中的所有空行

$newfp.=$farray[$i]; //重新整理后的数据


$fp=@fopen($filename,"w");//以写的方式打开文件
@fputs($fp,$newfp);
@fclose($fp);
?>
我想把以上代码改为以关键字索引删除行(原代码是按行删除的),把13800的那一行删除(关键字是要完整匹配的),请问如何改?
文件内容中有两个13800,但是我只想删除第一个13800那一行就行了,也就是不管有多少个13800都好,我只想删除第一个就行,请问如何改?

参考技术A 可以打开文件再关闭,例如:
$fclose($fopen('abc.txt','w'));

还可以直接写入空字符串,例如:
file_put_contents('abc.txt','');
参考技术B

那就很好改了。

<?php
$filename="aaa.txt";//定义操作文件
$dellinekey='13800'; //要删除的行关键字
$delcount=0;//已删除的行数
$farray=file($filename);//读取文件数据到数组中
for($i=0;$i<count($farray);$i++)
   
  if($delcount == 0 && substr_count($farray[$i],$dellinekey) > 0)  //先判断是否已删除一次,再判断当前行是否包含关键字,是则删除
     
     $delcount++;//标记删除一次
    continue;
     
  if(trim($farray[$i])<>"")  //删除文件中的所有空行
     
      $newfp.=$farray[$i];    //重新整理后的数据
     
   
$fp=@fopen($filename,"w");//以写的方式打开文件
@fputs($fp,$newfp);
@fclose($fp);
?>

追问

你的也可以,感谢热情帮助!!

参考技术C $filename="aaa.txt";//定义操作文件
$findstr='13800|555';
$farray=file($filename);//读取文件数据到数组中
for($i=0;$i<count($farray);$i++) 
   if($farray[$i]==$findstr)
        unset($farray[$i]);
            break;
   
  
$newfp=implode("\\n",$farray);
file_put_contents($filename,$newfp);

本回答被提问者采纳

尝试打开并读取 .txt 文件,但它从原始文件中删除了实际文本(Qt GUI C++

【中文标题】尝试打开并读取 .txt 文件,但它从原始文件中删除了实际文本(Qt GUI C++【英文标题】:Trying to open and read a .txt file, but it deletes the actual text from the original file (Qt GUI C++ 【发布时间】:2019-11-11 18:10:31 【问题描述】:

我正在尝试打开并读取一个 .txt 文件,然后在标签中显示其中的一行,但该行未显示,但所有内容均已从原始选定文件中删除。有什么想法吗?


    QString filename = QFileDialog::getOpenFileName(this,
                                                    tr("Open File"),
                                                    "/Users/kat/Documents/Programming 2/Assignment/Quizzes",
                                                    "All Files (*.*);;Text File (*.txt)");
    QFile file(filename);

    if(!file.open(QFile::WriteOnly | QFile::Text))
    
        QMessageBox::warning(this, tr("File Not Open"),"File Cannot Be Opened");
    

    QTextStream in(&file);
    QRegularExpression re("Name: ");
    QString title = in.readLine();
    title.remove(re);
    ui->label_4->setText(title);
    file.flush();
    file.close();```

【问题讨论】:

如果你想阅读,请不要以WriteOnly打开它。 【参考方案1】:

您已打开文件进行写入而不是读取if(!file.open(QFile::WriteOnly | QFile::Text))。如果你需要读取一个文件,你不应该这样做file.flush()

【讨论】:

谢谢。我将其更改为 ReadOnly,现在它可以完美运行了!

以上是关于PHP删除TXT文本内容的主要内容,如果未能解决你的问题,请参考以下文章

Vbs读取txt文本,高手进

如何使用批处理或PowerShell从文本文件中删除换行符

尝试打开并读取 .txt 文件,但它从原始文件中删除了实际文本(Qt GUI C++

急求:如何用python删除文本中的重复行?

php 从提供的内容中生成摘录。剥离HTML,删除尾随标点符号,并在删除文本时添加“更多”字符串。

在python中删除特定内容并输出到文件