【问题标题】:what is the significance of carriage return in context of javascript-php?javascript-php上下文中回车的意义是什么?
【发布时间】:2010-11-16 19:57:31
【问题描述】:

我在表单的文本字段中输入了包含 2 个换行符但没有回车符的数据。 (我可以通过 js 中的 strlen 或使用 str.charCodeAt() 函数来确认。)

现在我将此表单提交给一个 php 脚本,该脚本以某种方式接收回车以及换行符。

所以基本上,js 中的\n 变成 php 中的\r\n

我有两个问题:

  1. 有人知道为什么会这样吗?
  2. 为什么回车真的用于?

用例:服务器端和客户端的表单验证,用于限制字段的字符数。

【问题讨论】:

  • 您必须指的是文本区域,而不是文本字段

标签: php javascript validation jquery-validate carriage-return


【解决方案1】:

JavaScript 将换行符视为\n,但是当您通过 HTTP 提交表单时,JavaScript 与它无关(除了检查文本)。 Windows 将换行符视为\r\n,因此当您使用Windows 并在文本框中按回车键时,它实际上会在框中输入\r\n。当您将此数据发布到服务器时,JavaScript 不会执行此操作(除非您使用 Ajax),但您的浏览器会执行此操作。您的浏览器将使用与您的操作系统相同的换行符设置,这就是您在 PHP 文件中看到它们但在 JavaScript 中没有看到它们的原因。不同的操作系统对换行符的处理方式不同。有关更多背景信息,请参阅here

编辑
回车实际上来自旧的打印机命令。回车表示“将打印机墨盒送回行首”,换行(或换行符)表示“转到页面的下一行”。

【讨论】:

  • 我使用 mac 作为 web 服务器。我已经尝试过来自 Mac 和 Windows 机器的浏览器。带有 IE、Chrome、FF。
  • @Ron - 好吧,如果你想知道如何解决它,你可以尝试在 C# 或 JavaScript 中对提交的字符串进行搜索和替换。
【解决方案2】:

浏览器正在将\n 替换为\r\n。如今,CR 仅用于将光标返回到输出控制台/终端的第一列,以及无法单独处理 LF 的遗留系统。

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 1970-01-01
    • 2018-02-01
    • 2011-06-11
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多