我在表单的文本字段中输入数据,其中包含2个换行符,但没有回车符。 (我可以通过jlen中的strlen或使用str.charCodeAt()函数来确认。)
现在我将此表单提交给php脚本,该脚本以某种方式接收回车符以及新行字符。
基本上,js中的\n
在php中变为\r\n
。
我有两个问题:
用例:服务器端和客户端的表单验证,用于限制字段的字符数。
答案 0 :(得分:4)
JavaScript将换行视为\n
,但是当您通过HTTP提交表单时,JavaScript与它无关(除了检查文本)。 Windows将换行视为\r\n
,因此当您使用Windows并在文本框中点击返回键时,它实际上会在框中输入\r\n
。当您将此数据发布到服务器时,JavaScript不会执行此操作(除非您使用Ajax),您的浏览器会这样做。您的浏览器将使用与操作系统相同的换行设置,这就是您在PHP文件中看到它们而不是在JavaScript中看到它们的原因。不同的操作系统以不同的方式处理换行。有关更多背景信息,请参阅here。
修改强>
回车实际上来自旧的打印机命令。回车意味着“将打印机墨盒送回行首”和换行符(或换行符),“转到页面的下一行。”
答案 1 :(得分:0)
浏览器正在将\n
替换为\r\n
。 CR这些天只需要将光标返回到输出控制台/终端的第一列,以及那些不能单独处理LF的遗留系统。