我需要拆分以下字符串并将每个新行放入一个新的数组元素中。
this is line a.(EOL chars = '\r\n' or '\n')
(EOL chars)
this is line b.(EOL chars)
this is line c.(EOL chars)
this is the last line d.(OPTIONAL EOL chars)
(请注意,最后一行可能没有任何EOL字符。字符串有时也只包含1行,根据定义,它只是最后一行。)
必须遵循以下规则:
所以这应该导致以下数组:
[0] => "this is line a."
[1] => "this is line b."
[2] => "this is line c."
[3] => "this is the last line d."
我尝试了以下操作:
$matches = array();
preg_match_all('/^(.*)$/m', $str, $matches);
return $matches[1];
$ matches [1]确实包含每一个新行,但是:
无论如何,我一直在玩'\ R'和诸如此类的东西,但我找不到符合我上面概述的两条规则的好的正则表达式模式。有什么帮助吗?
答案 0 :(得分:5)
只需使用preg_split()
拆分正则表达式:
// Split on \n, \r is optional..
// The last element won't need an EOL.
$array = preg_split("/\r?\n/", $string);
注意,如果有一个尾随换行符,您可能还需要trim($string)
,因此最终不会有一个额外的空数组元素。
答案 1 :(得分:3)
只有一个功能 - file()
答案 2 :(得分:1)
我认为preg_split
是可行的方法......您可以使用适当的正则表达式将任何EOL字符用作分隔符。
如下所示(正则表达式需要更复杂一点):
$array = preg_split('/[\n\r]+/', $string);
希望有所帮助,
答案 3 :(得分:1)
使用preg_split
功能:
$array = preg_split('/[\r\n]+/', $string);