PHP从文本文件中删除多个整行

时间:2016-12-11 11:41:04

标签: php

我正在使用str_replace从读取txt文件中删除以“#”字符开头的某些字符串,但测试时的html输出仅删除#符号。我遇到的问题是我想删除所有以该特定字符开头的文本(包括'#')。

到目前为止,我已经尝试过:

1)

$data = str_replace('#','',file_get_contents($strFileName));
return $data;

2)

fopen($strFileName,'r');
$remove = "#";
$tmpData = file_get_contents($strFileName);
$data = preg_replace("/.*\b" . $remove ."\b.*\n/ui", "#"  , $tmpData);
return $data;

原始文本文件如下:

#

# bla bla bla 

#

# bla bla bla 

#

# bla bla bla

第一次尝试确实删除了#字符,但保留了其余字。 第二个根本没用。 感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用preg_replace

执行此操作
$data = preg_replace("/^#.*/m", "", $tmpData);

答案 1 :(得分:1)

您确实需要使用preg_replace来替换#。但是你需要“告诉”正则表达式你正在处理一个多行文本,所以它不会在第一行之后停止替换。您可以通过在正则表达式模式的末尾应用m修饰符来实现,因此发送到preg_replace的模式将是:

/^#.*/m - 请注意表达式末尾的m,表示:多行搜索

这将匹配以下内容:第一行的单个#字符(因为^是行开始标识符)以及之后的所有行。 以下替换:

$data = preg_replace('/^#.*/m','',$tmpData);

将替换上面匹配的所有行。

transformation annotations