PHP写文件换行符应依目标系统选择:Linux/macOS用\n,Windows记事本兼容需\r\n,推荐用PHP_EOL适配当前环境,但跨平台分发时须显式指定\r\n;fwrite需手动添加换行符,file_put_contents更安全且支持数组自动换行。

PHP写文件时换行符该用 \n 还是 \r\n
取决于目标系统和用途:Linux/macOS 用 \n,Windows 记事本兼容需 \r\n,但更稳妥的做法是用 PHP 内置常量 PHP_EOL——它会根据当前运行环境自动匹配换行符。
注意:PHP_EOL 不是字符串拼接的“万能解”,它只解决「当前 PHP 进程所在系统」的换行适配。如果你在 Linux 上生成给 Windows 用户下载的文本文件,仍建议显式用 \r\n,否则对方用记事本打开会显示为一行。
用 fopen + fwrite 写多行内容的正确姿势
别直接连写多个 fwrite 并指望自动换行;每行末尾必须手动加换行符。
fwrite($fp, "第一行" . PHP_EOL);fwrite($fp, "第二行" . PHP_EOL);- 或一次性写入:
fwrite($fp, "第一行\r\n第二行\r\n"); - 避免这样:
fwrite($fp, "第一行"); fwrite($fp, "第二行");(没换行符,两行会粘在一起)
用 file_put_contents 快速写带换行的文件
这是最常用也最不容易出错的方式,支持数组自动按行写入,且默认行为就含换行。
采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压
立即学习“PHP免费学习笔记(深入)”;
- 单行写入:
file_put_contents("log.txt", "日志内容" . PHP_EOL, FILE_APPEND); - 多行写入(推荐):
file_put_contents("list.txt", ["苹果", "香蕉", "橙子"]);→ 每个数组元素占一行,内部用\n分隔 - 想强制 Windows 风格换行:
file_put_contents("win.txt", str_replace("\n", "\r\n", implode("\n", $lines)));
常见错误:写进去看不见换行,或者出现 ^M
现象包括:用 cat 看正常,但用 vim 打开末尾显示 ^M;或在 Windows 上用记事本打开全是一行。
- 根本原因:换行符与编辑器/系统预期不一致
- 调试方法:
hexdump -C yourfile.txt | head查看实际字节(0a是\n,0d 0a是\r\n) - 写 Web 日志时,如果后续要被 shell 脚本处理,坚持用
\n;分发给 Windows 终端用户,优先用\r\n
换行不是写完就完的事,得看谁读、在哪读、怎么读。一个 PHP_EOL 解不了所有场景,关键还是明确输出目标。










