1

很明显:

\n = CR (Carriage Return) // Used as a new line character in Unix
\r = LF (Line Feed) // Used as a new line character in Mac OS
\r\n = CR + LF // Used as a new line character in Windows
(char)13 = \n = CR // Same as \n

但后来我也听说对于 HTML textarea,当它被 php 脚本提交和解析时,所有新行都被转换为 \r\n 而不管平台

这是真的吗?我可以依靠这个还是我完全错了?

IE。如果我想根据新行做explode(),我可以使用'\r\n'作为分隔符,无论用户是否使用mac、pc等

4

3 回答 3

2

所有换行符都应\r\n规范转换。

explode("\r\n", $theContent)所以无论使用什么平台,你都可以做一个简单的事情。

附言

\r仅在旧(er)Mac 上使用。现在 Mac 也使用 *nix 样式的换行符 ( \n)。

于 2012-04-04T21:23:20.423 回答
1

您可以尝试 preg_split,它将使用正则表达式来拆分字符串。在这个正则表达式中,您可以匹配所有 3 个新行变体。

$ArrayOfResults = preg_split( '/\r\n|\r|\n/', $YourStringToExplode );
于 2013-07-25T09:22:55.940 回答
0

这取决于您想要达到的目标。如果您最终这样做是为了将其显示/格式化为 HTML,您也可以使用nl2br()函数或可能像这样使用str_replace

$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );

如果您只想获取所有行的数组,我建议您使用所有 3 个字符(“\n”、“\r”、“\r\n”)进行爆炸

于 2012-04-04T21:20:31.217 回答