【问题标题】:php validation issue End of line character is invalid; expected "\n" but found "\r\n" [duplicate]php验证问题行尾字符无效;预期为“\n”,但发现“\r\n”[重复]
【发布时间】:2016-05-21 06:49:05
【问题描述】:

我正在使用 Sublime 文本编辑器。我想验证 validator 中的 Prestashop 模块。但它显示错误 End of line character is invalid; expected "\n" but found "\r\n" 这行代码只包含<?php。我已经搜索并替换为 来自不同编辑器的“\r\n”和“\n”。但它根本不起作用。 你能告诉我如何解决这个问题吗?任何帮助和建议都将是非常可观的。谢谢

【问题讨论】:

    标签: php replace sublimetext3 prestashop


    【解决方案1】:

    这是一个操作系统问题。当您编写跨平台代码时会发生这种情况。操作系统有不同的方式来解释行尾。在这里,这可能会有所帮助:

    Convert line endings

    另外,sublime 也有解决方案。如果您正在为 Unix 编写代码,请确保更改 Unix 的换行符。 View->Line Endings->Unix

    这个方案其实更深入一点:

    http://www.cyberciti.biz/faq/howto-unix-linux-convert-dos-newlines-cr-lf-unix-text-format/

    【讨论】:

    • 非常感谢。 PHP Strome 有类似的东西吗?
    • @TarunNagpal 是的,事实上我使用的是 PHP Storm。转到 File->Line Seperators 并将其更改为 Unix 的 LF。像 PHP Storm 中的大多数东西一样,如果您在执行此操作时选择了项目的根目录,它会为您转换所有文件。如果您打开了一个正在编辑的文件,它只适用于一个文件。您也可以通过Edit->Convert Indents 使用缩进来执行此操作。
    • 谢谢,它有效!
    【解决方案2】:

    最优雅的解决方案是使用 linux 而不是 windows 进行编码 - 因为简单地说:linux 使用 \n 作为换行符,windows 使用 \r\n

    大多数比记事本更高级的编辑器都支持将文件从 windows 样式转换为 linux 样式。只需浏览它们各自的菜单。

    并提供一个写在 PHP 中的解决方案:

    <?php
    $input = file_get_contents("old.php");
    $data = str_replace("\r\n", "\n", $input);
    file_put_contents("new.php");
    

    您的替换可能不起作用,因为大多数常规编辑器将反斜杠用作字符反斜杠,并且不会将 \n 解释为换行符的转义序列,而只是将其解释为反斜杠和 n。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 2022-01-06
      • 2011-10-29
      • 1970-01-01
      • 2013-09-09
      • 2014-07-20
      相关资源
      最近更新 更多