我有一些问题\r\n
:
- 换行符取决于浏览器?(不是它们在浏览器中的显示方式,而是如何
<textarea>
通过 http 请求将它们发送到 php) - 换行符是系统依赖的?(php运行的地方)
- php会应用一些隐式转换吗?
- mysql会应用一些隐式转换吗?
提前致谢!
我有一些问题\r\n
:
<textarea>
通过 http 请求将它们发送到 php)提前致谢!
<br>
在浏览器中获取换行符\n
在 OSX 上,\n
在 Unix/Linux 上,\r\n
在 Windows 上通常,对于浏览器\r
和\n
是空白字符,如(tab)' '
的 (whitespace )。\t
在某些标签(脚本、pre 等)中,它们被视为换行符。在这种情况下,浏览器将理解任何常见的换行符序列 ( \r
, \r\n
, \n
)。
当数据来自 textarea 时,换行符将始终表示为\r\n
.
php 文件中的换行符不依赖于它们运行的系统。这取决于用于创建 php 文件的文件编辑器的设置。当您将 php 文件复制到另一个系统时,换行符格式不会改变。
例如,看看这段代码:
print_r("
" === "\r\n");
其结果将取决于用于创建此文件的编辑器的设置。它不依赖于当前系统。
但是,如果您尝试读取系统包含的其他文件(例如文本文件),这些文件很可能会使用系统的常用换行符格式。
不,PHP 和 MySQL 不应用隐式转换。
系统无关的方式是使用 PHP_EOL 常量。
换行不依赖于浏览器,外部带有 CSS white-space:pre你必须执行nl2br() php 函数将换行转换为 BR 标签。
对我来说一个很大的问题是单引号字符串中的'like\nthis'
转义序列(如\n
)不会被解释。您必须使用双引号"like\nthis"
来获得实际的换行符。
<br>
是独立于浏览器的,\n
应该也是。
不知道关于\r
MySQL不会转换它
您可能对nl2br感兴趣,这会像您描述的那样采用换行符,并用 HTML 换行符 ( <br />
) 替换它们。