用PHP删除文本形式的文本文件
作者:互联网
我尝试删除文本文件中的一些texte.
文本文件是这样的:
#MESSAGE
:0
* ^(To|cc).*fd.*
|/usr/bin/vacation fd
#monfiltreperso
:0
* ^From.*martial@gironde.com
Maildir/.repertorymoi
#FIN
#monfiltreperso2
:0
* ^Subject:.*monsujet2
Maildir/.repertorymoi2
#FIN
#monfiltreperso3
:0
* ^From.*martial2@gironde.com
Maildir/.repertorymoi2
#FIN
我尝试删除#monfiltre …和#monfiltre …之间的线
我有这个 :
$pattern = '~'.'#filtre'.$nom.'\s*\n^#monfiltre~';
$filecontent = preg_replace($pattern, '', $filecontent);
所以我可以删除这一行:
06002
但是有#FIN未被删除.
我有 :
06003
我需要更改此规则:
$pattern = '~'.'#filtre'.$nom.'\s*\n^#monfiltre~';
但是我没有找到方法.
解决方法:
如果要删除#monfiltre *之间直到#FIN的部分,可以使用以下表达式:
echo preg_replace('/^#monfiltreperso$.+?^#FIN$[\r\n]*/ms', '', $str);
它使用多行模式/ m,以便您可以匹配^(行的开始)和$(行的结束).要跨多行匹配,您需要点匹配所有模式/ s;否则它将一直匹配到每一行的末尾.
还将匹配一组可选的换行符,以防止空行出现在最终结果中.
如果需要,可以使其动态化:
$filter = preg_quote('perso3', '/');
echo preg_replace('/^#monfiltre' . $filter . '$.+?^#FIN$[\r\n]*/ms', '', $str);
标签:file-get-contents,text-files,preg-replace,php,regex 来源: https://codeday.me/bug/20191030/1971523.html