php和换行:我需要知道什么?

时间:2012-05-04 14:53:30

标签: php mysql cross-browser cross-platform newline

我对\r\n

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

提前致谢!

6 个答案:

答案 0 :(得分:6)

  • 换行符取决于浏览器?
    • 否。使用<br>在浏览器中获取换行符
  • 换行符取决于系统? (php运行的地方)
    • 是:OSX上的\n,Unix / Linux上的\n,Windows上的\r\n
  • 将php应用一些隐式转换?
    • 没有
  • 将mysql应用一些隐式转换吗?
    • 没有

答案 1 :(得分:2)

通常,浏览器\r\n是空白字符,例如' '(空格)\t(制表符)。在一些标签(脚本,前等)中,它们被视为换行符号。在这种情况下,浏览器将理解任何常见的换行符序列(\r\r\n\n)。

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

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

例如,请查看以下代码:

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

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

但如果您正在尝试阅读系统中包含的其他文件(例如文本文件),则这些文件很可能会使用系统的公共换行符格式。

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

答案 2 :(得分:0)

<br>与浏览器无关,\n也应该是。

不了解\r

MySQL不会转换它

答案 3 :(得分:0)

您可能对nl2br感兴趣,这会采用您描述的新行字符,并将其替换为HTML换行符(<br />)。

答案 4 :(得分:0)

独立于系统的方式是使用PHP_EOL常量。

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

答案 5 :(得分:0)

对我而言,一个重要的问题是单引号字符串'like\nthis'转义序列(如\n)将不会被解释。您必须使用双引号"like\nthis"来获取实际换行符。