我有一个文本字符串,其中双EOL分隔一组值 e.g:
aaa
bbb
ccc
ddd
我需要将此字符串转换为这些值的数组。 我试过了:
explode('\n\n', $string),
explode(PHP_EOL . PHP_EOL, $string),
preg_split('/\n+', $string) &
preg_split('/\n\n', $string).
但它没有用。
请帮助。
答案 0 :(得分:1)
当你不知道换行序列时,你需要匹配任何换行序列,使用\R
简写类与PHP正则表达式匹配任何换行序列是非常方便的。添加限制量词{2}
以恰好匹配2个换行序列:
'/\R{2}/'
$s = "aa\r\n\r\nbb\n\ncc\r\n\ndd";
print_r(preg_split('/\R{2}/', $s));
结果:
Array
(
[0] => aa
[1] => bb
[2] => cc
[3] => dd
)
如果有超过2个换行序列,而您只想分成2个换行序列,请使用'/(?<!\R)\R{2}(?!\R)/'
。
答案 1 :(得分:0)
首先,如果你想使用任何php的东西,请使用双引号。 \ n将不会被解析为单引号,因此PHP会将其视为普通字符串而不是要解析的内容。
试试这个:
$some = 'aaa
bbb
ccc
ddd';
$output = explode("\r\n\r\n", $some);
print_r($output);
答案 2 :(得分:0)
我认为你可以像这样使用preg_match_all
:
preg_match_all ("/\S+/", $yourdata, $output_array);
请注意,使用此解决方案,您的输入数据可以包含不同数量的新行。