Php 从文本文件中删除一些字符串

Php 从文本文件中删除一些字符串,php,file,text,Php,File,Text,有一个大约3 GB的文本文件。我需要从中删除一些字符串,但我不确定我的方法是否正确。我做了下一步: -从文档中读取回显字符串 -查找需要删除的字符串 -获取2个海量:要保存的字符串和要删除的字符串 接下来的步骤是什么?是的,对于小文档来说,这项任务看起来很容易,但是对于大文件来说,还有更多的问题 if( $fh = fopen("file.txt", "r") ){ $left=''; while (!feof($fh)) {// read the file

有一个大约3 GB的文本文件。我需要从中删除一些字符串,但我不确定我的方法是否正确。我做了下一步: -从文档中读取回显字符串 -查找需要删除的字符串 -获取2个海量:要保存的字符串和要删除的字符串

接下来的步骤是什么?是的,对于小文档来说,这项任务看起来很容易,但是对于大文件来说,还有更多的问题

if( $fh = fopen("file.txt", "r") ){ 
        $left='';

        while (!feof($fh)) {// read the file
        $temp = fread($fh);  
        $fgetslines = explode("\n",$temp);
        $fgetslines[0]=$left.$fgetslines[0];

             if(!feof($fh) )$left = array_pop($lines);           
             foreach($fgetslines as $k => $line){
                   //This is where you can build your check for the strings you want to remove 
                   //if statement or switch, which ever makes sence with your current logic.
                   //After excluding your strings from the temp file 
                   //overwrite your original file with the temp file of proper strings that you want.
              }
        }
}
fclose($fh);

我想这正是你想要的。

让我们看看你尝试过但没有成功的方法。对于这样大小的文件,我会逐行检查,并将您想要保存的内容放入临时文件中。您可能不想尝试将整个文件放入内存,我不会使用PHP。在linux下使用sed可以非常高效地完成这项工作-请参阅:@Dave,你说得对。我的最后一步是在数组中保存所需的字符串。我限制了50个字符串用于测试,因为我不知道从1000+内存中可以得到什么,也不知道如何进行更多优化。我以前不知道fread。但我认为使用3gb文件作为阵列的opation是个坏主意。另外,看起来使用fread和while是不正确的。此脚本还将报告大约$line不存在。我的主要问题是如何更好地使用3GB文件,而不杀掉软件。