如题,php fopen后使用正则式删除不含指定字符串的行。
文本文件里内容若干行文本,例:
aa aaasd asda
asdas abcda da
www abcd2q tq3g34gqgrg
ewrwe abc sdf sdf
adsf;lgmbefa ksd
其中2、3、4行文本中均含有字符串abc,求使用正则式的相关php代码进行文本处理,删除不含字符串abc的行。谢谢!
php fopen后使用正则式删除不含指定字符串的行
答案:2 悬赏:0 手机版
解决时间 2021-03-18 14:47
- 提问者网友:抽煙菂渘情少年
- 2021-03-18 03:23
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2021-03-18 03:54
没必要用正则,效率低,用strpos匹配字符串就可以了。
$fp = fopen($path,'a+');
$str = "";
while(!feof($fp)){
$line = fgets($fp);
if(false !==strpos($line,'abc')){
$str .= $line;//如果匹配到abc就把它放到连接到字符串上
}
}
fclose($fp);
// 得到$str的内容之后就可以直接覆盖写入到之前的文件里面去了
file_put_contents($path,$str);
$fp = fopen($path,'a+');
$str = "";
while(!feof($fp)){
$line = fgets($fp);
if(false !==strpos($line,'abc')){
$str .= $line;//如果匹配到abc就把它放到连接到字符串上
}
}
fclose($fp);
// 得到$str的内容之后就可以直接覆盖写入到之前的文件里面去了
file_put_contents($path,$str);
全部回答
- 1楼网友:怙棘
- 2021-03-18 04:31
你好!
$a=file(文件);
foreach($a as $k=>$v)
{
if(preg_match('/(abc)/',$v)
{
unset($a[$k]);
}
}
file_put_contents('文件',$a);
仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯