PHP preg_split 无论如何都要保留分隔字符串?

发布于 2024-11-27 00:20:22 字数 422 浏览 2 评论 0原文

如果我有以下字符串,

$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
}

希望这是有道理的..

谢谢

If i have the following string

$string = "
0001

a
b
c
d
e

0002

f
g
h
i
j
";

I am splitting it with $r = preg_split("/\d{4}\n/", $string); and that works fine but i also want to include the dividing string..

i.e. at the moment this gives me

Array [0] {

a
b
c
d
e
}

 => [1] {

f
g
h
i
j
}

but i want it to include the divider i.e.

Array [0] {
0001

a
b
c
d
e
}

 => [1] {
0002

f
g
h
i
j
}

Hope that makes sense..

Thanks

Lee

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情绪少女 2024-12-04 00:20:22

您可以使用 lookahead [docs]< /a>:

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

DEMO

不知道为什么你有
中你的表情。您的字符串中没有 HTML(至少在本例中没有)。

You could use a lookahead [docs]:

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

DEMO

Don't know why you have <br/> in your expression. There is no HTML in your string (at least not in this example).

生生漫 2024-12-04 00:20:22

使用 preg_match_all 代替。

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

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

您还可以使用括号过滤掉

Use preg_match_all instead.

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

The matches will contain all the parts of your string that start with 4 digits and end right before the next digit.

You also may filter out the <br> using brackets.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文