Home >Backend Development >PHP Tutorial > PHP从一个TXT资料读取数据,匹配后符合条件的写入另一个TXT文件

PHP从一个TXT资料读取数据,匹配后符合条件的写入另一个TXT文件

WBOY
WBOYOriginal
2016-06-13 13:17:071554browse

PHP从一个TXT文件读取数据,匹配后符合条件的写入另一个TXT文件
我想用PHP从一个TXT文件读取数据,匹配后符合条件的写入另一个TXT文件,一下是代码,不知道哪里的问题,每次执行之后只会写入最后一条符合条件的(就一条),我希望的是全部符合条件的,希望大侠指点!


$path ='aa.txt';

$fp=fopen($path,"r");


$str = file_get_contents($path);//获得内容 
$arr = explode("\n",$str);//分行存入数组 

foreach($arr as $row)//遍历每行 
{
if(preg_match("/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/", $row)){
$path2 ='bb.txt';
$fp2=fopen($path2,"a");
fwrite($fp2,$row."\r\n");
fclose($fp2);
}
}
fclose($fp);
?>

------解决方案--------------------
从你的代码上看不出问题

你不是就取出email行吗?

$str = file_get_contents($path);//获得内容
if(preg_match_all("/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/m", $str, $r)) {
file_put_contents('$path2, join("\n", $r[0]));
}

就可以了
------解决方案--------------------

$arr = explode("\n",$str);
改成
$arr = preg_split('/[\\r\\n]+/',$str);

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn