我有一个" split"由2个换行符组成。我现在需要一个包含一个数组键中所有文本的数组。
想象一下以下文字
Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
Lorem ipsum
Lorem ipsum
Lorem ipsum
每个文本块都应该是一个自己的数组元素,这意味着,我最后需要有6个。
我试过这样的
$bulletList = preg_split('/[\s\n]{2,}/', $text);
并且喜欢这个
$bulletList = preg_split('/[\n]/', text, -1, PREG_SPLIT_NO_EMPTY);
但每次,我都有一个包含正确文本的数组索引,然后是一个包含以下内容的索引。
[1]=> string(6) "
"
如您所见,换行符正在进入新文本。我怎么只有一个数组中的值?
我的意思是,如果它是一个空字符串或者使用continue
,我可以在foreach循环中使用modulo
,但是,必须有一种方法可以在获取时更正确数据,对吗?
答案 0 :(得分:3)
您可以将split
用作:
print_r ( preg_split('/\R{2,}/', $data) );
\R
匹配PCRE中的任何换行符。
<强>输出:
Array
(
[0] => Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
[1] => Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
[2] => Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
[3] => Lorem ipsum
[4] => Lorem ipsum
[5] => Lorem ipsum
)
修改:对于由<br />
分隔的行,请使用此代码:
print_r ( preg_split('/(?:\R|<br[^>]*>){2,}/', $data, -1, PREG_SPLIT_NO_EMPTY) );