php验证问题行尾字符无效;预期为“\n”,但发现“\r\n”[重复]

Posted

技术标签:

【中文标题】php验证问题行尾字符无效;预期为“\\n”,但发现“\\r\\n”[重复]【英文标题】: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”。但它根本不起作用。 你能告诉我如何解决这个问题吗?任何帮助和建议都将是非常可观的。谢谢

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于php验证问题行尾字符无效;预期为“\n”,但发现“\r\n”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Next Js 错误:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义

Invariant Violation:Invariant Violation:元素类型无效:预期为字符串(对于内置组件)但得到:未定义

未捕获的错误:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件)但得到:对象

不变违规:元素类型无效:预期为字符串(用于内置组件)

将 React-Window 添加到 Material-UI 增强表:类型无效 - 预期为字符串或类/函数,但得到:数组

Parse.com JSON 导入抛出:键类型无效...,预期日期,但得到字符串