如何使用PHP跳过txt文件中的空行

时间:2018-01-28 21:01:56

标签: php

我使用此代码从名为database-email.txt

// unsubscribe
if (isset($_POST['email-unsubscribe'])) {     
$emailToRemove = $_POST['email-unsubscribe'] . ',';
$content = file_get_contents('database-email.txt');
if($content = str_replace($emailToRemove, '',  $content)) {
    echo "$emailToRemove successfully removed!";
}
else {
    echo "$emailToRemove could not be removed!";
}
file_put_contents('database-email.txt',  $content);
}

?>

我的txt文件如下所示:

annelore@mail.ru,
francien@live.nl,
frans@moonen.nl,
harry@hotmail.com,

jannie@live.nl,
jeanette.schmitz@live.nl,

johnny.doe@live.nl,

我试过这个跳过txt文件中的所有空行但没有成功:

file_put_contents('database-email.txt',  implode(PHP_EOL, file($content, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)));

如何跳过database-email.txt的空行?

3 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

file_put_contents('database-email.txt',
    str_replace("\n\n", "\n", file_get_contents('database-email.txt'))
);

NB \n取决于您在文件中插入行的方式。它可以是\r\nPHP_EOL

答案 1 :(得分:1)

这应该可以解决问题:

file_put_contents('database-email.txt', implode('', file($content, FILE_SKIP_EMPTY_LINES)));

可替换地:

file_put_contents('database-email.txt',preg_replace('~[\r\n]+~',"\r\n",trim($content)));

答案 2 :(得分:1)

file()函数与FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES选项一起使用,将文件作为数组读取。然后使用array_search()函数搜索元素并删除它(如果存在)。然后,您可以内爆数组并将其写回文件。

不要使用str_replace方法,这是有缺陷的。想象一下这是你的文件:

abdc@domain.com

如果您删除dc@domain.com,您将获得:

ab

您没有检查是否要替换整个电子邮件。

我还建议您删除逗号,如果每行只有一封电子邮件,则不需要它们。