PHP preg_split无论如何要保持分割字符串?

时间:2011-07-30 12:56:18

标签: php arrays preg-match explode preg-split

如果我有以下字符串

$string = "
0001

a
b
c
d
e

0002

f
g
h
i
j
";

我将它与$r = preg_split("/\d{4}\n/", $string);分开并且工作正常,但我也想要包含分隔字符串..

即。目前这给了我

Array [0] {

a
b
c
d
e
}

 => [1] {

f
g
h
i
j
}

但我希望它包含分隔符,即

Array [0] {
0001

a
b
c
d
e
}

 => [1] {
0002

f
g
h
i
j
}

希望有道理..

由于

2 个答案:

答案 0 :(得分:6)

您可以使用lookahead [docs]

preg_split("/(?=\d{4})/", $string, -1, PREG_SPLIT_NO_EMPTY)

DEMO

不知道为什么你的表达中有<br/>。您的字符串中没有HTML(至少在此示例中不是这样)。

答案 1 :(得分:1)

改为使用preg_match_all。

preg_match_all("/\d{4}[^\d]+/", $string, $matches);

匹配项将包含字符串中以4位数字开头并在下一位数字之前结束的所有部分。

您也可以使用括号过滤掉<br>