php - 删除开头具有特定模式的行

标签 php text

我有一个大约 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/

相关文章:

html - 阻止文本从 div 中泄漏

mysql - 从 MySQL 中检索文本数据的 SQL 语句,其中字段中的每个单词都重复

php - PHP获取PATCH请求数据

php - 如何在 PHP 中正确拆分 PATH 变量?

c++ - GUI 和文本模式 C++ 设计以消除冗余(可选参数?函数重载?)

javascript - 计算 SVG 文本的垂直高度

java - 需要更快地转换文件

php - 通过 HTTPRequestObject.send 函数通过 POST 发送到 php 文件的信息的位置

php - 在自治系统编号 (ASN) 中获取 IP

php - 如何登录成功?