在文本文件中添加新行无效

时间:2015-12-17 22:15:29

标签: php file

我的代码:

 $file = WWW_ROOT . 'CSV' . DS . 'customer_mobileNumber.txt';
 $handle = fopen($file, "w");
 $content = '';    
 foreach ($customers as $customer) {
     $mobile = trim($customer['Customer']['mobile']);
     $alt_mobile = trim($customer['Customer']['alt_mobile']);
     if (!empty($mobile))
         $content .= $customer['Customer']['mobile'] . PHP_EOL;
     if (!empty($alt_mobile))
         $content .= $customer['Customer']['alt_mobile'] . PHP_EOL;
  }
  fwrite($handle, $content);
  fclose($handle);

即使我尝试使用" \ n"而不是PHP_EOL。但新行未添加到文本文件中。

1 个答案:

答案 0 :(得分:2)

不同平台上的行结尾不同。众所周知的是:

  • Linux / Unix:单个LF(\n
  • Mac:单个CR(\r
  • Windows / DOS:CR后跟LF(\r\n

PHP_EOL常量保持代码上执行的平台的换行常量。对于远程Web服务器,很可能是Linux,\n。如果您随后将该文件下载到Mac,则不会看到CR字符,因此不会显示换行符。在Windows上,它取决于程序是否尊重非\r\n换行符。

为防止在下载文件中出现这种情况,请始终使用完整的\r\n行结尾,因为所有3个平台及其程序(通常)都会正确解析它们。最糟糕的情况是,如果将两个字符解析为换行符,某些程序可能会间歇性地显示空行。

请注意,历史上\r\n是唯一正确的方法。在古代终端和好的旧点阵打印机上,回车符将光标或打印头(“托架”)返回到行的开头,而换行符将使输出单行输出。后来的平台简化了这一点,由于兼容性原因,MS决定坚持使用遗留符号。最后,传统符号是唯一被所有主要平台正确处理的符号。