Php 删除开头具有特定图案的线条

Php 删除开头具有特定图案的线条,php,text,Php,Text,我有一个大约25000行的文本文件。大约525kb 有些行的开头有随机文本。 有些有很长的分号字符串 有些人只有三个分号,然后在同一行上有一个空格和更多的文本。这些是我想删除的行 这是一个样本 ;;; Updated Time 20120706122706 ;;; Generic DEveloper Output ;;; Some Random Comments ;;; I got some more... ;;; Yet another uneeded line

我有一个大约25000行的文本文件。大约525kb

有些行的开头有随机文本。 有些有很长的分号字符串

有些人只有三个分号,然后在同一行上有一个空格和更多的文本。这些是我想删除的行

这是一个样本

   ;;; Updated Time 20120706122706
   ;;; Generic DEveloper Output

   ;;; Some Random Comments
   ;;; I got some more...
   ;;; Yet another uneeded line
   ;;; Thanks for using StackOverflow <http://stackoverflow.com>, or...
   ;;; Not.

   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Banana Production

   [Data_Release_Version]
   Version=12586
   Released=20120706122706

   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Baseline Properties

   [BaseLineProperties]
   Comment=BaselineProperties
;;;更新时间20120706122706
;;; 通用开发人员输出
;;; 一些随意的评论
;;; 我还有一些。。。
;;; 又是一条非联邦线路
;;; 感谢您使用StackOverflow,或。。。
;;; 不
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 香蕉生产
[数据发布版本]
版本=12586
已发布=20120706122706
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 基线属性
[基线属性]
注释=基线属性
-----等等

一旦到达第一行,4个或更多;在线上,我需要文件的其余部分,因为没有“;;”行

试着快速找到一些东西,而不是把每一行都读出来,如果不匹配就写出来

文件是ASCII(可能是UTF-8)文本类型的文件

有什么想法吗


感谢您的时间、帮助和知识。

我想您自己给出了答案:


制作一个脚本,在循环中逐行读取输入文件(while)。如果满足以下两个条件,它会将每一行写入输出文件:1。一个标志(“完成”)为假,为2。该行不以“;;”(不是空格)开头。这将删除以三个分号开头的行。一旦出现包含更多分号的行,就将标志设置为TRUE,这样将复制剩余的行而不进行检查

取决于。。我会尝试加载到一个字符串中,然后用换行符执行explode(),这样它就在数组中,然后在没有strpos==0和-strpos!==0的任何字符串上运行foreach并跳过它false,如果不匹配,可以输入continue以跳到下一行

另一种选择是解析、跳过,甚至使用fseek等等。取决于许多不同的因素来决定什么是最快的


您可以在稍后内爆,并添加换行符,然后推出一个文件,和/或使用换行符。根据输出的位置而定。

我建议使用
file\u get\u contents()
并将文件内容保存在变量中作为字符串,然后在每个换行符处使用
explode()
该字符串,然后在
foreach
循环中,使用
preg\u match()
要检查该行是否以3个分号和一个空格开头,如果有,请将其放入另一个名为
$output
的数组中。在foreach之后,
内爆()
$output
并添加换行符,然后使用
文件\u put\u contents()
将其打印到另一个文件中。希望这有帮助:-)

代码:



你能再解释一下你想要什么吗。不太清楚。是否要删除分号大于4的行?我要删除以“;;”开头的行,而不是删除分号大于或小于3的行,然后删除空格。一旦我碰到一条连续有4个或更多分号的线,我就可以停止删除线了。我基本上想要删除一个开头有随机数行的标题。
<?php
$string = file_get_contents($filename);
$array = explode("\n",$string);
foreach($array as $arr) {
    if(!(preg_match("^;;;\s",$arr))) {
        $output[] = $arr;
    }
}

$out = implode("\n",$output);
file_put_contents($path,$out);
?>