在每次出现子字符串后提取数字

Extract numbers after each occurrence of a substring

我的输入:

$string = " text1 .id.123 .id.4576 text4 .id.56778 text 5 .id.76728";

如何使用 php 获得输出?

.id.

之后提取号码

想要的结果:

123,4576,56778,76728

使用preg_match_all

等模式
if (preg_match_all('#\.id\.(\d+)\b#', $input, $matches, PREG_SET_ORDER)) {
    foreach ($matches as $match) {
        // $number = (int) $match[1];
        var_dump($match);
    }
}

匹配一个文字点,然后 id,然后一个文字点,然后用 \K 重置全字符串匹配,然后匹配一个或多个数字。

用逗号分解匹配项。

代码:(Demo)

$string = " text1 .id.123 .id.4576 text4 .id.56778 text 5 .id.76728";
preg_match_all('~\.id\.\K\d+~', $string, $m);

echo implode(',', $m[0]);
// 123,4576,56778,76728