我正在使用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
第一次尝试确实删除了#
字符,但保留了其余字。
第二个根本没用。
感谢。
答案 0 :(得分:1)
您可以使用preg_replace
,
$data = preg_replace("/^#.*/m", "", $tmpData);
答案 1 :(得分:1)
您确实需要使用preg_replace
来替换#
。但是你需要“告诉”正则表达式你正在处理一个多行文本,所以它不会在第一行之后停止替换。您可以通过在正则表达式模式的末尾应用m
修饰符来实现,因此发送到preg_replace
的模式将是:
/^#.*/m
- 请注意表达式末尾的m
,表示:多行搜索
这将匹配以下内容:第一行的单个#
字符(因为^
是行开始标识符)以及之后的所有行。
以下替换:
$data = preg_replace('/^#.*/m','',$tmpData);
将替换上面匹配的所有行。