【发布时间】:2020-03-07 16:28:59
【问题描述】:
我正在使用 PHP 生成一个文本文件,该文件用于装有 windows 2000 操作系统和 mozilla firefox 浏览器的计算机(请不要问为什么)。该文件在 windows 10 和最新版本的火狐上正确生成并运行流畅。
我现在的问题是新行在旧版本(windows 2000 OS 和 firefox 10)中不渲染
我试过用ff:
1. /n
2. /r/n
3. <br>
4. $string = "This\r\nis\n\ra\nstring\r"; echo nl2br($string);
5. PHP_EOL
所有都没有生成所需的输出。它只是将 BR 附加为文本
代码是:
header("Content-Type: text/html; charset=UTF-8");
header("Content-Type: multipart/form-data; boundary=something");
header("Content-Length: ".strlen($data)."");
header("Content-Disposition: attachment; filename=".$_GET['name']."");
echo nl2br(base64_decode($data));
示例文本为:"Assembly Lot Summary Report " . "\r\n" . "\r\n" ;
FYI : Notepad(only) 用于打开文本文件
【问题讨论】:
-
添加最小的 HTML 结构:
<html><head></head><body>your text here</body></html>。首先创建静态文件会有所帮助。也许浏览器会漏检。 -
@DanielSęk 它适用于较新的操作系统和 mozilla firefox 版本。新行按预期添加。我唯一的假设是因为 mozilla 和操作系统的版本太旧了
-
您想为记事本生成纯文本文件(在这种情况下使用
nl2br没有意义)或HTML 文件以在浏览器中打开(在这种情况下<br>将被正确解释) . -
不幸的是要求是使用记事本
-
确保生成的文件有
\r\n行结束。较旧的记事本(例如在 Windows XP 中)无法正确处理仅以\n结尾的行尾。使用@Jimmix 所写的text/plain,不要使用nl2br。使用十六进制编辑器查找生成的行尾。您还可以手动转换行尾(取决于客户端计算机)并将文件作为application/octet-stream(二进制流)发送。
标签: php windows firefox newline notepad