我何时使用PHP_EOL而不是\n,反之亦然?Ajax/Jquery客户端问题

fab*_*bio 22 php ajax jquery post line-breaks

我有一个php解析器,它通过换行符拆分给定的字符串,执行如下操作:

$lines = explode(PHP_EOL,$content);
Run Code Online (Sandbox Code Playgroud)

在服务器端工作时,解析器工作正常.但是,当我通过ajax(使用jquery的$ .post方法)通过post传递内容时,问题就出现了:不会识别换行符.经过近一个小时的测试和头痛后,我决定将PHP_EOL改为"\n"并且它有效:

$ lines = explode("\n",$ content);

现在它有效!该死的我失去了这么多时间!当有人正确地使用PHP_EOL和"\n"时,有人可以解释一下,这样我以后可以节省时间吗?感谢你的答案;)

mar*_*rio 44

常量PHP_EOL通常应用于特定于平台的输出.

  • 主要用于文件输出.
  • 实际上,除非在二进制模式下使用,否则文件函数已经在Windows系统上变换\n←→ .\r\nfopen(…, "wb")

但是对于文件输入,您应该更喜欢\n.虽然大多数网络协议(HTTP)都应该使用\r\n,但这并不能保证.

还有一些经典的例子,你应该避免由于它的平台模糊: PHP_EOL

  • 手动生成网络协议有效负载,例如HTTP over fsockopen().
  • 对于mail()和MIME构造(实际上,你不应该自己做乏味的事情).
  • 文件输出,如果你想在不考虑环境的情况下一致地编写Unix \n换行符.

因此,"\r\n"在不写入文件时使用文字组合,但为期望网络换行符的特定上下文准备数据.

  • 请注意旧的Mac使用`\ r``,这将是一个更好的解决方案:`preg_replace('〜\ r \n?〜',"\n",$ str);`. (3认同)

ale*_*lex 9

PHP_EOL 在编写日志文件等输出时应该使用.

它将生成特定于您的平台的换行符.


Jon*_*nah 5

PHP_EOL是一个常量,包含服务器平台使用的换行符.在Windows的情况下,它是\r\n.在*nix上,它是\n.你显然有一个Windows服务器.

如果你在*nix服务器上,那么这个改变就不会修复它,因为它会是\n.如果要将数据发送到客户端(即浏览器),则应使用\r\n以确保识别换行符.