将字符串按照两个换行符拆分而不是一个。

3

我想要分割一个包含两个以上换行符的字符串,但是我不确定如何做。例如:

$text = "
text1

text2

text3
";

$text = explode(PHP_EOL, $text);

这样做后,数组中会有一些空的索引。我需要在两个换行符处进行分割,而不是一个。我该怎么做?


2
你也可以使用preg_split函数和模式/\R{2}/来匹配\r\n\r\n\n\n$res = preg_split('/\R{2}/', trim($text)); 在eval.in上测试; 参见此答案中\R的匹配内容 - Jonny 5
2个回答

6

如果您确定换行符是如何形成的(可能包含 \n 和/或 \r),您可以按照以下方式进行操作:

$Array = explode("\n\n", $text);

你还可以对字符串进行修剪,以去除开头和结尾的换行符:
$Array = explode("\n\n", trim($text));

3
在使用Windows编辑器(带有操作系统设置)生成的文件中,或者来自HTML表单字段时,“\n”不总是适用的。我建议在这种情况下使用preg_split,并接受“\r?\n”作为换行模式,以便更加灵活(“\n\r”和“\r”形式已经过时)。 - user2864740
@user2864740,我已经添加了关于换行变量的警告,谢谢。 - Marcovecchio

3
这应该适用于您:
只需使用带有标志 PREG_SPLIT_NO_EMPTYpreg_split() 并使用常量 PHP_EOL 将字符串分割,例如:
$arr = preg_split("/". PHP_EOL . "/", $text, -1, PREG_SPLIT_NO_EMPTY);
print_r($arr);

输出:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接