3

早晨,

当您发布具有文本区域的表单时,使用什么行尾?\r\n、\n 或类似本地文件是否取决于操作系统?

我正在尝试查找 RFC 或 W3C 规范或其他内容,还是基于操作系统/浏览器而有所不同?有链接吗?

例如

<textarea name="message">This is
my
message
</textarea>

可不可能是

This is\r\n
my\r\n
message\r\n

或者

This is\n
my\n
message\n

它是基于浏览器/操作系统的标准还是不同的。证明?

我不担心将文本区域内容发送到服务器之前,而是担心 PHP/服务器端的实际变量内容。

4

3 回答 3

7

此信息可以在 HTML5 规范中找到。它说对于textarea元素:

...有表单提交值。它被规范化,因此换行符使用 U+000D CARRIAGE RETURN "CRLF" (U+000A) 字符对,此外,如果需要,给定元素的 wrap 属性,插入额外的换行符以在给定宽度处换行文本。

元素的值被定义为元素的原始值,并应用了以下转换:

替换每次出现的“CR”(U+000D)字符后面没有“LF”(U+000A)字符,以及每次出现的“LF”(U+000A)字符前面没有“CR”( U+000D) 字符,由一个 U+000D CARRIAGE RETURN "CRLF" (U+000A) 字符对组成的两个字符的字符串。

如果元素的 wrap 属性处于 Hard 状态,则使用 UA 定义的算法将 U+000D CARRIAGE RETURN "CRLF" (U+000A) 字符对插入到字符串中,以便每行不超过字符宽度的字符。出于此要求的目的,行由字符串的开头、字符串的结尾和 U+000D CARRIAGE RETURN "CRLF" (U+000A) 字符对分隔。

于 2013-10-13T21:10:53.717 回答
1

根据HTML 规范,换行符表示为 CR LF。在表单提交的默认数据格式中,它被编码为%0D%0A. (这不依赖于操作系统及其本地行结束约定。)您的服务器端代码将从那里获取它。在 PHP 中,您会将其视为\r\n.

于 2013-10-13T21:10:21.333 回答
-1

you will receive plain text - if u need to add <br> tags you can use http://php.net/manual/en/function.nl2br.php =)

I'm sorry if I didn't understand to your question - don't down vote me :\

EDIT: It's probably \n because when u dump it it return text line by line like when you use echo "something\nsomething";

于 2013-10-13T20:34:30.057 回答