我有一个新的行字符字符串。我想把这个字符串转换成一个数组,对于每一个新行,在数组中跳转一个索引位置。

如果字符串是:

My text1
My text2
My text3

我想要的结果是:

Array
(
    [0] => My text1
    [1] => My text2
    [2] => My text3
)

当前回答

<anti-answer>

正如其他答案所指定的,一定要使用爆炸而不是分裂,因为从PHP 5.3.0开始,分裂已被弃用。例如,以下不是你想要的方式:

$your_array = split(chr(10), $your_string);

LF = "\n" = chr(10), CR = "\r" = chr(13)

</anti-answer>

其他回答

explode("\n", $str);

"(而不是')非常重要,否则换行符不会被解释。

大卫有一个伟大的方向,但它错过了\r。这招对我很管用:

$array = preg_split("/(\r\n|\n|\r)/", $string);

你可以使用爆炸函数,使用“\n”作为分隔符:

$your_array = explode("\n", $your_string_from_db);

例如,如果你有这样一段代码:

$str = "My text1\nMy text2\nMy text3";
$arr = explode("\n", $str);
var_dump($arr);

你会得到这样的输出:

array
  0 => string 'My text1' (length=8)
  1 => string 'My text2' (length=8)
  2 => string 'My text3' (length=8)

注意,必须使用双引号字符串,因此\n实际上被解释为换行符。 (详情请参阅手册页。)

换行符在不同的平台上有不同的定义,\r\n, \r或\n。

使用RegExp分割字符串,您可以用\R匹配所有三个字符串

对于你的问题:

$array = preg_split ('/$\R?^/m', $string);

这将与Windows, Mac和Linux上的换行符匹配!

PHP已经知道当前系统的换行符。只用EOL常数。

explode(PHP_EOL,$string)