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

如果字符串是:

My text1
My text2
My text3

我想要的结果是:

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

当前回答

对于任何试图在crontab中显示cronjob并且不知道如何分隔每行的人,请使用爆炸:

$output = shell_exec('crontab -l');
$cron_array = explode(chr(10),$output);

使用'\n'似乎不工作,但chr(10)工作得很好:D

希望这能让一些人少头疼。

其他回答

只使用'base'包也是简单情况下的解决方案:

> s <- "a\nb\rc\r\nd"
> l <- strsplit(s,"\r\n|\n|\r")
> l  # the whole list...
[[1]]
[1] "a" "b" "c" "d"
> l[[1]][1] # ... or individual elements
[1] "a"
> l[[1]][2]
[1] "b"
> fun <- function(x) c('Line content:', x) # handle as you wish
> lapply(unlist(l), fun)
<anti-answer>

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

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

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

</anti-answer>

这就是我的方式:

$lines = preg_split('/[\r\n]+/', $db_text, NULL, PREG_SPLIT_NO_EMPTY);

这也将跳过所有空行。

我一直都很成功地使用这个方法:

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

(更新为最后的\r,谢谢@LobsterMan)

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

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