我使用此代码从名为 我的txt文件如下所示: 我试过这个跳过 如何跳过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);
}
?>
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
的空行?
答案 0 :(得分:1)
您可以尝试这样的事情:
file_put_contents('database-email.txt',
str_replace("\n\n", "\n", file_get_contents('database-email.txt'))
);
NB \n
取决于您在文件中插入行的方式。它可以是\r\n
或PHP_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
您没有检查是否要替换整个电子邮件。
我还建议您删除逗号,如果每行只有一封电子邮件,则不需要它们。