我有一个大约 25,000 行的文本文件。大约 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
-----等等。
一旦到达第一行有 4 个或更多;线上,我需要文件的其余部分,因为没有“;;;”行。
尝试快速找到一些东西,而不是读取所有行,如果它不匹配“;;;”,则将其写回。
文件是 ASCII(可能是 UTF-8)文本类型文件。
有什么想法吗?
感谢您的时间、帮助和知识。
最佳答案
我建议使用 file_get_contents()
并将文件内容作为字符串保存在变量中,然后在每个换行符处使用 explode()
该字符串,然后在 foreach
循环中,使用 preg_match()
检查该行是否以 3 个分号和一个空格开头,如果有,则将其放入另一个名为 的数组中$输出
。在 foreach 之后,implode()
$output
并添加一个换行符并使用 file_put_contents()
将其打印到另一个文件中。希望这会有所帮助:-)
代码:
<?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);
?>
关于php - 删除开头具有特定模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11707162/