我如何将字符串放入数组中,并用新行分隔?

问题描述 投票:199回答:19

我的数据库中有一个带换行符的字符串。我想将该字符串转换为数组,对于每一行,在数组中跳一个索引位置。

如果字符串是:

我的文字1我的文字2我的文字3

我想要的结果是这样:

Array
(
    [0] => My text1
    [1] => My text2
    [2] => My text3
)
php string line-breaks
19个回答
268
投票

您可以使用explode功能,使用“ explode”作为分隔符:

\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) ,因此double-quoted string实际上被解释为换行符。((有关更多详细信息,请参见该手册。)


7
投票
$array = preg_split('/\R/', $text);

3
投票

对于试图在crontab中显示cronjobs并对如何分隔每一行感到沮丧的人,请使用explode:


2
投票

您可以使用此:


2
投票

您可以执行$ string = nl2br($ string),以便将换行符更改为


1
投票
$array = explode("<br />", $string);

1
投票

在php文档中选择了此:


1
投票

这是我的方式:


0
投票

此方法始终对我有用:


0
投票

仅使用'base'软件包也是简单情况的解决方案:


-5
投票

使用PHP爆炸在字符串或换行符> 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) 之间使用任何特殊字符,我们都可以实现。


302
投票

我一直很成功地使用它:

\n

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


276
投票

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

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

因此遇到您的问题:

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

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


34
投票

PHP已经知道当前系统的换行符。只需使用EOL常量即可。

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

27
投票

explode(PHP_EOL,$string) 的更快(更快)的替代方法是使用Davids answerstr_replace

explode

发生了什么事:由于换行符可以采用不同的形式,因此我将$arrayOfLines = explode("\n", str_replace(array("\r\n","\n\r","\r"),"\n",$str) ); \ r \ n,\ n \ r和\ r替换为\ n(并保留了原始\ n)。然后在str_replace上爆炸,您将所有行放在一个数组中。

我在此页面的src上进行了基准测试,并在for循环中将行拆分了1000次,并且:\n平均花了11秒preg_replace平均约1秒

str_replace & explode的更多详细信息和本标志信息>


19
投票

David:好的方向,但您错过了\ r。这对我有用:


11
投票

您不需要preg_ *函数,preg模式或内部的str_replace等,以便通过换行符将字符串成功地分成数组。在所有情况下,无论是Linux / Mac还是m $,都可以。


9
投票
<?php 

 $array = explode(PHP_EOL, $string);
 // ...  
 $string = implode(PHP_EOL, $array);

?>

8
投票

StackOverflow不允许我对hesselbom的答案发表评论(声誉不高,所以我要添加自己的...]

explode("\n", $str);
© www.soinside.com 2019 - 2024. All rights reserved.