Preg_replace删除除整数和:(冒号)之外的所有内容


preg_replace to trim everything except integers and : (colon)

我想问一下如何在PHP中编写preg_replace以删除除整数之外的所有内容,':'(遇到的第一个冒号)。

一个例子:

一(1)只狗:四(4)只猫共享一杯饮料,价格为0.40美元或40美分。

1:4

下面是两个例子:

    $input  = 'one (1) dog : four (4) cat sharing a drink costing USD0.40 or 40 cents.';
    $regex  = '~.*?(?P<first>'d+).*?:.*?(?P<second>'d+).*~s';
    $result = preg_replace($regex, '$1:$2', $input);
    echo $result;
    if (preg_match($regex, $input, $matches)) {
      $result = $matches['first'] .':'. $matches['second'];
    }

preg_replace()和preg_match()都将得到相同的结果。