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