换行符textarea的字符分隔符

时间:2012-04-04 21:10:41

标签: php newline carriage-return

显而易见:

\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而不管平台

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

即。如果我想基于新行做爆炸(),我可以使用'\ r \ n'作为分隔符,无论用户是否使用mac,pc等

3 个答案:

答案 0 :(得分:2)

所有换行都应在\r\n之后转换为the spec

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

P.S。

\r仅用于旧(呃)Mac。如今Mac还使用* nix样式换行符(\n)。

答案 1 :(得分:1)

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

$ArrayOfResults = preg_split( '/\r\n|\r|\n/', $YourStringToExplode );

答案 2 :(得分:0)

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

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

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