对文本字符串中的所有数字进行修改

Doing a modification in all numbers in text string

我有很多文本字符串,就像那样

'from 12.34 to 56.78'

'12.34 到 56.78'

'12.34'

我想修改所有这些字符串中的这些数字

<?php
$array = explode(' ',$string);
foreach ($array as $value) {
    if(is_numeric($value))
        $newarray[] = round($value); // or other functions
    else
        $newarray[] = $value;
}
$newstring = implode(' ',$newarray);

这是进行任何修改的最佳方式吗?

根据您的评论,您可能会看看 preg_replace_callback()
考虑以下代码,它很容易将所有数字四舍五入:

<?php

$strings = array('from 12.34 to 56.78', '12.34 to 56.78', '12.34');
$values = array();

$regex = '~\b\d[\d.]+\b~';
foreach ($strings as $string) {
    $string = preg_replace_callback($regex,
        function($match) {
            // or anything else
            return round($match[0]);
        },
        $string);
    $values[] = $string;
}

print_r($values);
# [0] => from 12 to 57
# [1] => 12 to 57
# [2] => 12

?>