什么时候使用PHP_EOL代替\ n,反之亦然?Ajax / Jquery客户端问题

2021/01/29 20:11 · jquery ·  · 0评论

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

$lines = explode(PHP_EOL,$content);

在服务器端工作时,解析器工作正常。但是,当我通过ajax通过post通过传递内容(使用jquery的$ .post方法)时,出现了问题:无法识别换行符。因此,经过将近一个小时的测试和头痛,我决定将PHP_EOL更改为“ \ n”,并且可以正常工作:

$ lines = explode(“ \ n”,$ content);

现在可以了!该死的,我浪费了很多时间!有人可以正确地使用PHP_EOL和“ \ n”来向我解释,这样我将来可以节省时间吗?感谢您的好心的回答;)

该常数PHP_EOL通常应用于平台特定的输出。

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

对于文件输入,您应该首选\n尽管大多数网络协议(HTTP)应该使用\r\n,但不能保证。

  • 因此,最好分手\n\r手动删除所有可选的选项

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

    或立即使用该file(…, FILE_IGNORE_NEW_LINES)功能,将EOL处理留给PHP或auto_detect_line_endings进行

  • 一个更健壮和更简洁的选择是使用preg_split()和一个正则表达式:

    $lines = preg_split("/\R/", $content);
    

    \R占位符检测的任何组合\r+ \n这样将是最安全的,甚至适用于Classic MacOS≤ 9文本文件(在实践中很少见)。

    强制性的微优化注意事项:

    尽管regex有成本,但令人惊讶的是它通常比PHP中的手动循环和字符串后处理更快。

并且由于其平台模糊性,有一些经典示例应避免 PHP_EOL

  • 手动生成网络协议有效负载,例如HTTP over fsockopen()
  • 对于mail()和MIME构造(实际上,无论如何您都不应该单调乏味地自己做)。
  • 文件输出,如果你想一直写只是Unix的\n,无论环境的换行。

因此,"\r\n"当不写文件时,而是为需要网络换行符的特定上下文准备数据时,请使用文字组合

PHP_EOL 写入日志文件之类的输出时,应使用。

它将产生特定于您平台的换行符。

PHP_EOL是一个常量,用于保存服务器平台使用的换行符。如果是Windows,则为\r\n在* nix上是\n您显然拥有Windows服务器。

如果您使用的是* nix服务器,则该更改将无法修复,因为它将是\n如果要将数据发送到客户端(即浏览器),则应使用\r\n以确保识别出换行符。

PHP_EOL是运行PHP的服务器使用的行结尾。用户提交的内容可能会以其使用的任何格式结尾。但是,file()它并不会像在换行符上爆炸一样,仅使用该函数就可以满足您的需求。

最好使用PHP_EOL进行恕我直言

为了确保PHP和JS处理换行符之间的一致性,您可能需要使用PHP_EOL在JS中定义行尾变量

var eol = '<?php echo str_replace(array("\n","\r"),array('\\n','\\r'),PHP_EOL) ?>';

之后,eol用于拆分提交的文本区域内容

本文地址:http://jquery.askforanswer.com/shenmeshihoushiyongphp_eoldaiti-nfanzhiyiranajax-jquerykehuduanwenti.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!