3

我有一些问题\r\n

  • 换行符取决于浏览器?(不是它们在浏览器中的显示方式,而是如何<textarea>通过 http 请求将它们发送到 php)
  • 换行符是系统依赖的?(php运行的地方)
  • php会应用一些隐式转换吗?
  • mysql会应用一些隐式转换吗?

提前致谢!

4

6 回答 6

6
  • 换行符取决于浏览器?
    • 否。用于<br>在浏览器中获取换行符
  • 换行符是系统依赖的?(php运行的地方)
    • 是:\n在 OSX 上,\n在 Unix/Linux 上,\r\n在 Windows 上
  • php会应用一些隐式转换吗?
  • mysql会应用一些隐式转换吗?
于 2012-05-04T14:56:01.337 回答
2

通常,对于浏览器\r\n是空白字符,如(tab)' '的 (whitespace )。\t在某些标签(脚本、pre 等)中,它们被视为换行符。在这种情况下,浏览器将理解任何常见的换行符序列 ( \r, \r\n, \n)。

当数据来自 textarea 时,换行符将始终表示为\r\n.

php 文件中的换行符不依赖于它们运行的​​系统。这取决于用于创建 php 文件的文件编辑器的设置。当您将 php 文件复制到另一个系统时,换行符格式不会改变。

例如,看看这段代码:

print_r("
" === "\r\n");

其结果将取决于用于创建此文件的编辑器的设置。它不依赖于当前系统。

但是,如果您尝试读取系统包含的其他文件(例如文本文件),这些文件很可能会使用系统的常用换行符格式。

不,PHP 和 MySQL 不应用隐式转换。

于 2012-05-04T15:06:36.917 回答
1

系统无关的方式是使用 PHP_EOL 常量。

换行不依赖于浏览器,外部带有 CSS white-space:pre你必须执行nl2br() php 函数将换行转换为 BR 标签。

于 2012-05-04T14:58:53.830 回答
0

对我来说一个很大的问题是单引号字符串中的'like\nthis'转义序列(如\n)不会被解释。您必须使用双引号"like\nthis"来获得实际的换行符。

于 2012-05-04T15:05:30.753 回答
0

<br>是独立于浏览器的,\n应该也是。

不知道关于\r

MySQL不会转换它

于 2012-05-04T14:56:36.110 回答
0

您可能对nl2br感兴趣,这会像您描述的那样采用换行符,并用 HTML 换行符 ( <br />) 替换它们。

于 2012-05-04T14:57:21.643 回答