1

次の文字列がある場合

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

それが理にかなっていることを願っています..

ありがとう

リー

4

2 に答える 2

6

先読み [docs]を使用できます。

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

デモ

なぜ<br/>あなたの表現にあるのか分かりません。文字列に HTML はありません (少なくともこの例では)。

于 2011-07-30T13:00:10.257 に答える
1

代わりに preg_match_all を使用してください。

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

一致には、4 桁で始まり、次の桁の直前で終わる文字列のすべての部分が含まれます。

<br>括弧を使用して除外することもできます。

于 2011-07-30T13:02:00.787 に答える