ええと、それは私があなたの他の質問に提供したものとほぼ同じですxD
(.*?)
をに変更([0-9]+)
if (preg_match_all("/(?<=First)([0-9]+)(?=Second)/s", $haystack, $result))
for ($i = 1; count($result) > $i; $i++) {
print_r($result[$i]);
}
.*?
は任意の文字 (改行を除く) と一致し、区切り文字 "First" と "Second" の間の数字のみに一致するには、それを に変更する必要があります[0-9]
。次に、それらの間に何もないことはできないと想定しているため、 a の+
代わりに aを使用し*
ます。
なぜあなた[^0-9]
が最初に使ったのか分かりません。通常[^0-9]
、数字ではない 1 文字を意味し、少なくとも私の意見では、そこに置くことは実際には何の役にも立ちません。
少しクリーンアップすると、必要な出力を得るために不要なものをいくつか削除できます。
if (preg_match_all("/(?<=First)[0-9]+(?=Second)/", $haystack, $result))
print_r($result[0]);