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

2024-04-04

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

$lines = explode(PHP_EOL,$content);

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

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

现在可以了!该死的,我浪费了这么多时间!有人可以解释一下如何正确使用 PHP_EOL 和“\n”,以便我将来可以节省时间吗?感谢您的友善回答;)


常数PHP_EOL http://pear.php.net/reference/PHP_Compat-latest/__filesource/fsource_PHP_Compat__PHP_Compat-1.6.0a2CompatConstantPHP_EOL.php.html通常应该用于特定于平台的输出。

  • 主要是为了文件输出 really.
  • 其实文件功能已经转换了\n ←→ \r\n在 Windows 系统上,除非用于fopen(…, "wb")二进制模式。

For 文件输入你应该更喜欢\n然而。虽然大多数网络协议(HTTP)应该使用\r\n,这是不能保证的。

  • 因此最好分手\n并删除任何可选的\r手动:

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

    或者使用file(…, FILE_IGNORE_NEW_LINES) http://php.net/file立即运行,将 EOL 处理留给 PHP 或自动检测行结尾 http://php.net/manual/en/filesystem.configuration.php#ini.auto-detect-line-endings.

  • 一个更强大和简洁的替代方案是使用preg_split() http://php.net/preg_split和一个正则表达式:

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

    The \R placeholder https://nikic.github.io/2011/12/10/PCRE-and-newlines.html detects any combination of \r + \n. So would be safest, and even work for Classic MacOS ≤ 9 text files (rarely seen in practice).

    Obligatory microoptimization note:
    While regex has a cost, it's surprisingly often speedier than manual loops and string postprocessing in PHP.

这里有一些经典的例子,你应该avoid PHP_EOL

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么时候使用 PHP_EOL 而不是 \n ,反之亦然? Ajax/Jquery 客户端问题 的相关文章

随机推荐