使用PHP脚本下载文本文件将删除中断行
所以我有一个文本文件来注册想要尝试演示的人的电子邮件。当我通过FTP下载文档时,所有电子邮件按预期的行分隔,但当我尝试使用代码第二部分中的下载页面下载文档时,它将所有电子邮件连接在一起,没有中断行 在文件中写入的代码使用PHP脚本下载文本文件将删除中断行,php,Php,所以我有一个文本文件来注册想要尝试演示的人的电子邮件。当我通过FTP下载文档时,所有电子邮件按预期的行分隔,但当我尝试使用代码第二部分中的下载页面下载文档时,它将所有电子邮件连接在一起,没有中断行 在文件中写入的代码 <?php if(isset($_POST['email'])) { if (validateEmail($_POST['email'])) { $file = 'documentos/emails.txt'; $p
<?php
if(isset($_POST['email']))
{
if (validateEmail($_POST['email']))
{
$file = 'documentos/emails.txt';
$person = "Data: ".date("d/m/Y H:i:s")." - Email: ".xss_protect($_POST['email']).PHP_EOL;
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
}
else
{
$erro = "Introduza um email válido!";
unset($_POST['email']);
}
}
?>
文件下载代码
<?php
ob_clean();
$filename = strstr($_GET["file"], '/') . ".txt";
$filename = str_replace('/', '', $filename);
$file = $_GET["file"] .".txt";
header("Content-Disposition: attachment; filename=" . urlencode($filename));
header('Content-type: text/plain');
header("Content-Length: " . filesize($file));
flush();
$fp = fopen($file, "r");
while (!feof($fp))
{
echo fread($fp, 65536);
flush();
}
fclose($fp);
exit;
?>
提前感谢可能会将FTP配置为转换目标系统的行尾,这种情况可能会发生。
PHP_EOL
可能不是您系统上识别的行尾,请尝试使用记事本++之类的程序,或者对系统将识别的新行进行编码。e、 g.\r\n
确保您的文件使用了正确的换行符
echo str_replace("\n", "\r\n", fread($fp, 65536));
从你的描述中不太清楚发生了什么。但可能是因为换行符在MS Windows平台和unixoid系统(通常在服务器端使用)上的编码不同。我使用了“\r\n”并将其更改为PHP_EOL,因为我听说它会使不同的系统识别换行符,但下载文件时不起作用。不过它可以在filezilla中打开。@显然,Condward
PHP\u EOL
在服务器端使用了换行符代码!它无法猜测客户端操作系统!如果有疑问,请始终使用propper unixoid样式的换行符:\r\n
,而不是MS Windows版本。在互联网上更有意义。谢谢你的解决方案。它只接受“\r\n”而不接受“\r\n”。